我有一个使用 IOCP、套接字和重叠的服务器。最初一切都很好。侦听套接字使用 IOCP 上的 AcceptEx 传递给新创建的套接字。我可以很好地处理数千个连接。
当服务器进程处理落后时,它会关闭并断开监听端口。当它赶上来时,它将使用新的 IOCP 重新建立侦听端口。
我遇到的问题是,在重新建立侦听端口后,新连接到达后,我尝试使用与上面完全相同的代码路径来接受。AcceptEx 失败并显示 WSAEINVAL。
我知道我遗漏了一些细节(魔鬼总是在细节中,不是吗?)——但希望能在我应该寻找的地方提供帮助。
如果好奇的灵魂想要更多信息,我很乐意提供。