我有一个用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/

10-12 19:16