我正在寻找一种简单的方法来查看服务器上是否打开了远程UDP端口
注意几个防火墙/网络设置/IDS等可能会影响结果。。。以下方法不是100%可靠的,但它是UDP IMHO唯一可能的方法(因为UDP是无连接的)
您可以使用UdpClient
,在底层套接字上设置接收超时,连接到该远程服务器/端口,Send
一些小消息(byte[]
!)并调用Receive
。
如果端口已关闭,则会出现一个异常,表示连接已强制关闭(SocketException
与ErrorCode
10054=WSAECONNRESET
)。。。这意味着端口未打开。
否则,您将收到一个应答或一个超时异常-两者都应被解释为"UDP端口打开"。
您不能。这是设计的,因为UDP是无连接的。你必须在应用层上解决这个问题。