ВНИМАНИЕ, что несколько брандмауэров / сетевые настройки / IDS и т. Д. Могут повлиять на результат ... следующий метод НЕ надежен на 100%, но это единственный метод, возможный с UDP IMHO (так как UDP без установления соединения).
Вы можете использовать UdpClient
, установить тайм-аут приема на базовом сокете , установить соединение на этот удаленный сервер / порт, Send
небольшое сообщение (byte[]
!) и вызов Receive
.
ЕСЛИ порт закрытполучить исключение, говорящее о том, что соединение было принудительно закрыто (SocketException
с ErrorCode
10054 = WSAECONNRESET
) ... что означает, что порт НЕ открыт.
В противном случае вы либо получите ответ, либо тайм-аутисключение - оба должны интерпретироваться как «порт UDP открыт».