我在两台直接连接在一起的 PC(均为 Windows XP SP3)之间的简单 TCP 连接上遇到了问题。这两台 PC 用于直接连接的网络适配器上的 IP 地址分别为 10.10.10.1(服务器)和 10.10.10.2。
下面您可以看到 Wireshark 屏幕截图,显示了从客户端发送 ARP 广播后我们看到的问题。这导致我们的非阻塞连接上出现 Windows Socket 错误 10035,并且仅在大约 1 秒或更长时间后我们才会收到 FD_WRITE 事件,告诉我们可以在客户端等上再次发送。
这种行为对于我们的场景来说并不好,但为什么通信会挂起这么长时间?有什么解决方案吗?除了向 ARP 缓存中添加静态条目,这是我们想避免的。
答案1
您是否尝试修复 TCP/IP 堆栈?如果没有:
打开命令提示符(开始->运行->输入 cmd):
将 WINSOCK 条目重置为安装默认值:netsh winsock reset catalog
将 TCP/IP 堆栈重置为安装默认值:netsh int ip reset reset.log
重新启动并测试。
如果这不起作用,您可以使用此实用程序: