Проверка брандмауэра Java? Скажите администратору сервера отключить брандмауэр

Я создаю приложение, в котором я использую Socket Programming в Java, используя TCP. Когда на сервере запущен брандмауэр, я не могу подключиться к серверу. Итак, как я могу проверить в Java, что брандмауэр работает, и сказать администратору сервера, что он должен выключить его.

3 ответа

Решение

Единственный гарантированный способ сделать это - попытаться установить соединение с портом host:.

Но опять же, если вы не можете подключиться, вы не можете сказать, что это из-за брандмауэра, это может быть из-за того, что сервер фактически не работает. Таким образом, вы не можете с уверенностью сказать, что брандмауэр включен.

@ Сурадж прав. Если вы не можете подключиться к определенному порту TCP, вы не знаете, недоступен ли хост, никто не слушает порт, или брандмауэр блокирует вас. Но есть хитрость, которая помогает в 90% случаев. Обычно конфигурация брандмауэра имеет исключения, такие как HTTP:80, ICMP и т. Д. Итак, вы можете попробовать подключиться к вашему порту. Если это работает, вы сделали. В противном случае попробуйте установить любое другое соединение с хостом (HTTP, ICMP и т. Д.). Если вам удалось это сделать, брандмауэр заблокировал вас. В противном случае, вероятно, хост недоступен.

Ваш вопрос неясен, но в целом единственный надежный способ проверить, доступен ли какой-либо ресурс, - это попытаться его использовать. Вы должны справиться с исключениями, которые возникают в любом случае, и использование какого-либо другого теста до реальной попытки не гарантирует использование тех же путей и создает проблему с временным окном. Так что не делай этого. Просто напишите код и поймайте исключения.

Другие вопросы по тегам