0

视窗 8,x64。

将重叠的 Windows 套接字 Api 与 IOCP 一起使用。

注意到套接字的意外行为:例如,对 DisconnectEx 的调用返回错误 WSAENOTCONN,但后来我在 GetQueuedCompletionStatusEx 中收到一个事件,正是这个断开连接(就像它仍然被安排而不考虑返回的错误一样)。AcceptEx 也会发生同样的情况(返回不同的错误,例如 WSAEINVAL)。

我期望 IOCP 事件仅被安排用于挂起的操作(返回错误代码 WSA_IO_PENDING),而不是其他错误。

编辑:我的问题是:即使对 DisconnectEx/AcceptEx 的调用返回不是 WSA_IO_PENDING 的错误(WSAGetLastError),系统能否安排 IOCP 事件?

谢谢!

4

2 回答 2

1

IOCP往往会在看似奇怪的时间向您充斥状态,包括在您认为句柄已关闭之后...我已经关闭了把手。然后将处理任何排队的系统状态,当我得到自定义的 OVERLAPPED 时,我知道我可以释放与句柄相关的所有内部缓冲区。

于 2012-12-21T22:30:53.727 回答
0

上述问题的答案是否定的。我遇到的问题是我在同一个重叠结构上安排了几个 IOCP 事件,这导致了这种奇怪的行为。

于 2012-12-28T16:50:07.983 回答