Если порт сервера неверен, клиент ожидает ответа - PullRequest
0 голосов
/ 08 мая 2011

Клиент вводит некоторую информацию о сервере (например, имя сервера, номер порта против ...) и сообщение, которое будет отправлено.Но если он пишет номер порта неправильно, клиент все еще ждет ответа.

Как создать исключение, если порт для сервера назначения не открыт?

Ответы [ 2 ]

1 голос
/ 08 мая 2011

@ комментарий Скаффмана прав.

Обычно, когда вы пытаетесь открыть TCP / IP-соединение с портом, который ничего не слушает, стек TCP / IP на удаленном компьютере отвечает на первоначальный SYNсообщение, отправив RST, и это приводит к исключению «отказано в соединении».

Если вы не видите это исключение, наиболее вероятной причиной является то, что что-то блокирует сообщение SYN (или обычный ответ SYNACK),Обычно это будет брандмауэр (на любом конце).Обычная стратегия брандмауэра состоит в том, чтобы молча отбрасывать сообщение TCP SYN для всех портов, кроме небольшого.Это будет иметь эффект, который вы наблюдаете.

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

1 голос
/ 08 мая 2011

Если сервер не прослушивает порт, он получит ConnectException: Connection refused Однако, если вы подключитесь к порту, на котором запущена другая служба, он может не получить ответ в зависимости от того, что делает эта служба.Если это вызывает озабоченность, я предлагаю вам прервать соединение, если оно не дает ожидаемого результата.

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