首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查远程UDP套接字

检查远程UDP套接字
EN

Stack Overflow用户
提问于 2015-04-26 23:41:54
回答 1查看 4.1K关注 0票数 0

我试图基于这个问题创建UDP端口检查器,但是当在端口范围1-100上测试(例如) www.google.com时,我会收到每个端口的异常“连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接主机没有响应”。下面是测试端口的代码:

代码语言:javascript
复制
try {
        UdpClient udpClient = new UdpClient(Port);
        Socket uSocket = udpClient.Client;
        uSocket.ReceiveTimeout = 5000;
        uSocket.Connect(Adress, Port);
        udpClient.Connect(Adress, Port);
        IPEndPoint RemoteIpEndPoint = new IPEndPoint(Adress, Port);
        Byte[] sendBytes = Encoding.ASCII.GetBytes("?");
        udpClient.Send(sendBytes, sendBytes.Length);
        Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint);
} catch (SocketException e) {
        if (e.ErrorCode == 10054) {
             return false;
        } else {
             return false;
        }
}
return true;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-26 23:52:48

UDP是一种无连接协议。由于您没有收到错误10054 (这是端口关闭的明确指示),但得到了一个TimeoutException,所以您应该假设端口是打开的,但是远程主机只是不关心发送任何确认您的消息。但是,如果路由器或防火墙正在过滤该端口,您也将得到一个TimeoutException。因为UDP是无连接的,所以无法知道。快速参考:

收到回复了吗?端口打开。

有一个错误为10054的SocketException端口已关闭。

TimeoutException吗?如果在您和目标之间有防火墙或NAT路由器,端口可能会被过滤(实际上是已关闭的)。如果您确定没有过滤UDP通信量,则端口是open

也可以参见UDP上的Wikipedia页面无连接通信

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29884988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档