в Java, как я знаю, если определенный порт на хосте открыт ?? (кроме использования сокета, если это возможно) - PullRequest
0 голосов
/ 29 апреля 2011

первокурсник, и здесь, и в Java я знаю такие коды, как:

Socket clientSocket=null;

try   
{   
  clientSocket=new Socket(192.168.2.3,1111);
  System.out.println("port open");   
  clientSocket.close();   
}   
catch(Exception   e)   
{   
  System.out.println("port closed");
}

может использоваться для проверки того, открыт ли определенный порт (здесь порт 1111 на 192.168.2.3), просто блуждание есть лидругой путь??не используя socket () возможно ??

1 Ответ

4 голосов
/ 29 апреля 2011

Чтобы немного упростить задачу: да, установление соединения - это правильный способ проверки открытого порта, и если вы даже найдете другой метод, он будет использовать socket () под капотом.

Сложностьвся проблема связана с тем, что «открытый порт» является подозреваемым номер один в каждой книге по безопасности.Системные администраторы используют несколько приемов для борьбы с так называемым «сканированием портов».Это включает в себя сообщение о «ложном срабатывании» (утверждение о том, что порт открыт, а он нет) любому программному обеспечению, которое ведет себя как сканер портов (то есть: устанавливает соединение и отключается без отправки каких-либо данных).на самом деле лучший способ - установить соединение, отправить запрос и обработать ответ.Любой другой подход может потерпеть неудачу при определенных конфигурациях сети / хоста / безопасности, оставляя вашего пользователя озадаченным, почему его приложение не работает, когда заявляет, что нет проблем с соединением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...