Сокет позволяет соединить 2 машины в сети. На этом пути может быть несколько filrewalls:
- персональный межсетевой экран с обеих сторон
- межсетевые экраны компаний с обеих сторон.
- межсетевые экраны интернет-провайдеров с обеих сторон.
Межсетевые экраны могут быть настроены на блокировку
- определенные IP-адреса
- определенные порты
- определенные протоколы
- направление движения (вход / выход ограничено)
Более того, две разные ситуации выглядят одинаково с точки зрения TCP:
- сервер не слушает порт
- межсетевой экран блокирует соединение (см. Выше)
Вскоре сначала вы должны решить, что вы хотите проверить. Если, например, вы просто хотите знать, что вы можете подключиться к определенному порту на определенной машине, позвоните new Socket(host, port)
и поймайте исключение. Если вы хотите различить ситуацию, когда брандмауэр беспокоит вас, или пульт не отвечает, этого недостаточно.
В этом случае вам нужна другая ссылка. Например, вы знаете, что на удаленном хосте есть HTTP-сервер и какой-то другой частный сервер, который может быть заблокирован брандмауэром. Сначала вы можете установить HTTP-соединение (чтобы убедиться, что хост работает), а затем попытаться подключиться к сокету. Если HTTP работает, а сокет, вероятно, не блокирует его, брандмауэр.