The symptom: TCP client(IOCP+Winsock) stuck at GetQueuedCompletionStatus() when sending(WSASend) very large amount of data to the TCP server. I am using using two TCP clients sending traffic to a single TCP server (2 TCP connections end on the server), and sending is faster than receiving.
Investigation: 1) Using wireshare, I can see the TCP client will stop sending after receiving TCP ZeroWindow signal from TCP server. 2) TCP client print out the WSASend return WSA_ON_PENDING. complete
Test 1) No problem found: using single TCP client sending packet to TCP server 2) No problem if slow down the client transmission speed by sleep between 2 WSASend. 3) change socket options does not help, e.g. (no_delay, sndbuf, rcvbuf)
Question Can anyone shed lights on this issue? Or any details in winsock implementaion would be appreciated.