IOCP + WSASend在收到来自对等体的TCP ZeroWindow信号后永远挂起

时间:2017-03-03 16:01:41

标签: tcp winsock iocp

症状: TCP客户端(IOCP + Winsock)在向TCP服务器发送(WSASend)非常大量的数据时停留在GetQueuedCompletionStatus()。我正在使用两个TCP客户端将流量发送到单个TCP服务器(服务器端有2个TCP连接),发送速度比接收速度快。

调查: 1)使用wireshare,我可以看到TCP客户端从TCP服务器收到TCP ZeroWindow信号后将停止发送。 2)TCP客户端打印出WSASend返回WSA_ON_PENDING。 完整

测试 1)没有问题:使用单个TCP客户端向TCP服务器发送数据包 2)如果通过两个WSASend之间的睡眠减慢客户端传输速度没问题。 3)更改套接字选项没有帮助,例如(no_delay,sndbuf,rcvbuf)

问题 任何人都可以解决这个问题吗?或者,对winsock实施中的任何细节都表示赞赏。

0 个答案:

没有答案