我的套接字引擎出现了奇怪的行为。然后引擎使用带有 OVERLAPPED 结构的 IO 完成端口。
我使用(每次调用一个缓冲区)发送了几个数据包,WSASend
但有时我成功调用GetQueuedCompletionStatus
了传输字节为零的位置!如果我拨打电话WSAGetOverlappedResult
(不等待),它会返回WSA_IO_INCOMPLETE
.
过了一会儿,我收到一个具有相同重叠结构的新完成数据包,这次传输的字节与缓冲区长度匹配并且WSAGetOverlappedResult
没有返回错误。
当数据包仍在队列中时,为什么操作系统会生成完成通知?