UDP套接字上的套接字错误10052

Jes*_*per 12 sockets

我们有一个.NET 2.0桌面应用程序,它通过UDP发送和接收网络数据包.

有几个用户报告了偶然的套接字错误10052,当代码在UDP套接字上调用socket.BeginReceiveFrom时会发生这种错误.

这是什么意思?

套接字错误10052的官方MS文档说 - 引用:"WSAENETRESET(10052)网络在重置时断开了连接.由于保持活动活动在操作正在进行时检测到故障,连接已断开.它也可以通过setsockopt如果尝试在已经失败的连接上设置SO_KEEPALIVE."

这对UDP套接字没有多大意义,因为UDP是一种无连接协议.

我知道与UDP套接字相关的另一个关闭错误代码10054意味着收到了ICMP消息"Port Unreachable",我想知道10052是否可能映射到另一个ICMP消息?

我已经谷歌搜索了几个月,阅读网络书等,但找不到任何东西.请帮助 - UDP套接字上的套接字错误10052是什么意思?

提前致谢

spi*_*piv 8

请参阅http://msdn.microsoft.com/en-us/library/ms740120%28v=vs.85%29.aspx,其中介绍了recvfrom函数.它说的是WSAENETRESET(这是winsock错误10052):

对于数据报套接字,此错误表示生存时间已过期.

  • 这是UDP实现往往无法向应用程序报告的许多错误之一.你几乎必须忽略它们. (3认同)

War*_*ung 2

WSAE NET RESET 表明这是由于网络接口本身的重置而发生的。您的程序绑定到 UDP 端口,因此从某种意义上说,它连接,但连接到网络接口而不是远程对等点。

尝试启动您的程序,使其到达即将进行 BeginReceiveFrom 调用的位置,然后在设备管理器中禁用您的 NIC 并重新启用它。或者,通过 Wi-Fi,断开并重新建立与 WAP 的连接。甚至只需拔掉计算机上的以太网电缆也可能会发生这种情况,因为最新版本的 Windows 默认会在发生这种情况时杀死通过该 NIC 连接的所有套接字。

这可以解释来自现场的罕见问题报告。这可能仅在硬件级别存在某些本地网络故障时才会发生。