Как правило, вы не можете этого сделать.
В принципе, хост с закрытым портом должен отправлять обратно недоступный порт ICMP.Но они часто не делают;аналогично, недоступный или недоступный хост не будет отправлять такое сообщение.Кроме того, некоторые брандмауэры блокируют сообщение.
Получение ошибки также проблематично.Linux имеет четко определенную, но сбивающую с толку семантику для поиска ошибок в сокетах (см. Различные справочные страницы, socket (7), ip (7) и udp (7) для получения дополнительной информации).Иногда вы будете видеть предыдущую ошибку, о которой сообщалось, например, когда вы выполняете несвязанную функцию sendto ().Другие ОС имеют слегка отличающиеся механизмы для получения определенных ошибок сокетов.
Если гарантированно будет определенный протокол на другом порту, вы можете отправить пакет, который должен вызвать конкретный ответ (если это ваш собственный протокол, вы можете добавить тип сообщения "вы там"), а затем вы можете использовать это.Но в целом вопрос о том, сгенерирован ли ответ, зависит от приложения, и вы не можете различить порт, который ничего не прослушивает, и порт, который прослушивает что-то, что решает не отвечать вам.