socket recv 在 Windows XP 中挂起

socket recv hangs in Windows XP

我已经通过 USB 在 Android 设备和 Windows 主机之间建立了 TCP/IP 套接字连接。用于连接的端口是 8000/8001。这种通信模式在 Windows 7 和其他生态系统中运行良好,而在 Windows XP 32 位上 "recv" API 会无限期挂起。

我编写了一个示例程序,其中服务器和客户端在 Windows XP 主机上运行并且工作正常但是当涉及 USB 时出现问题。我使用嗅探器工具 "USB analyser" 嗅探来自设备的数据,我看到数据进入设备,但不知何故 recv API 无法捕获它。

我使用的代码在下面的 link 中: http://www.tenouk.com/Winsock/Winsock2example9.html

谢谢, 书呆子

编辑:此问题仅出现在 Windows XP 32 位上,而不出现在 64 位上。

Edit2:我找到了一个破解方法,在建立连接后,服务器会立即发送一个虚拟数据,客户端会捕获它。如果这样做,则 recv 将不会挂起。关于为什么需要这样做的任何线索?

在 recv 之前添加一些延迟(100 毫秒)将解决此问题。但是我不知道为什么会发生这种情况的确切原因。