我们有一个.NET 2.0桌面应用程序,可以发送和接收网络
UDP上的数据包。
一些用户报告偶尔发生套接字错误10052
当代码在UDP套接字上调用socket.BeginReceiveFrom时。
这是什么意思?
套接字错误10052的官方MS文档说 - 引用:
“WSAENETRESET(10052)网络在重置时断开连接。连接
因为保持活动检测到故障而被打破了
行动正在进行中。它也可以通过setsockopt返回
尝试在已经连接的情况下设置SO_KEEPALIVE
失败“。
这对UDP套接字没有多大意义,因为UDP是一个
无连接协议。
我知道与UDP套接字有关的另一个关闭错误代码10054
表示收到ICMP消息“端口无法访问”,我是
想知道10052是否可以映射到另一个ICMP消息?
我已经谷歌搜索了几个月,阅读网络书等,但找不到
任何东西。
请帮忙 - UDP套接字上的套接字错误10052是什么意思?
提前致谢
看到 http://msdn.microsoft.com/en-us/library/ms740120%28v=vs.85%29.aspx,其中描述了 recvfrom的 功能。它说的是WSAENETRESET(这是winsock错误10052):
对于数据报套接字,此错误表示生存时间已过期。
看到 http://msdn.microsoft.com/en-us/library/ms740120%28v=vs.85%29.aspx,其中描述了 recvfrom的 功能。它说的是WSAENETRESET(这是winsock错误10052):
对于数据报套接字,此错误表示生存时间已过期。
发送UDP数据报时,请确保TTL值足够高。
如果您使用的是UdpClient类。
然后在发送数据报之前使用以下内容:
myUdpClient.Ttl = 255;
注意:255是TTL的最大值。
如果该值不够,则存在一些网络问题。
WSAE 净 RESET表明它是由于网络接口本身的重置而发生的。您的程序坐在那里绑定到UDP端口,所以从某种意义上说 是 连接,但到网络接口而不是远程对等。
尝试启动程序,使其达到即将进行此BeginReceiveFrom调用的程度,然后在“设备管理器”中禁用NIC并重新启用它。或者,使用Wi-Fi,删除并重新建立与WAP的连接。甚至可能只需将以太网电缆拔出到您的计算机上即可,因为最新版本的Windows默认会在发生这种情况时终止通过该网卡连接的所有套接字。
它将解释该领域罕见的问题报告。这可能仅在硬件级别存在本地网络故障时才会发生。