我有一个用C++实现的客户端服务器体系结构,在Windows 7下具有阻止套接字的功能。在达到一定负载水平时,一切都运行良好。如果有几个客户端(例如> 4个)正在接收或发送兆字节的数据,则有时与一个客户端的通信会卡住大约5秒钟。在这种情况下,所有其他客户端都按预期工作。
缓冲区大小为8192字节,在服务器端的日志记录如下:
TimeStamp(s.ms)-接收的字节
…
1299514524.618-8192
1299514524.618-8192
1299514524.618-0004
1299514529.641-8192
1299514529.641-3744
1299514529.641-1460
1299514529.641-1460
1299514529.641-8192
…
似乎在这5秒钟内只能读取4个字节。此外,我发现卡住时间始终约为5秒-永远不会少于4,甚至永远不会超过6 ...
有任何想法吗?
最好的祝福
麦可
最佳答案
这是Windows错误。
KB 2020447 - Socket communication using the loopback address will intermittently encounter a five second delay
修补程序在
KB 2861819 - Data transfer stops for five seconds in a Windows Socket-based application in Windows 7 and Windows Server 2008 R2
关于c++ - 套接字recv调用将线程卡住大约20分钟。 5秒,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5401448/