ConnectEx与IOCP问题

时间:2010-06-26 07:12:47

标签: winsock iocp

我使用IOCP制作了一个简单的虚拟服务器/虚拟客户端程序,用于某些测试/分析目的。 (我还想注意我是异步网络编程的新手)

看起来服务器与原始客户端运行良好,但是当虚拟客户端尝试使用ConnectEx函数连接到服务器时,IOCP Worker线程仍然被GetQueuedCompletionStatus函数阻止,并且在服务器成功接受连接时永远不会返回结果

问题和/或原因是什么,我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

我认为你的评论回答了你自己的问题。

您的事件顺序不正确,您说您绑定,ConnectEx,关联到IOCP。

您应该绑定,将套接字与IOCP关联,然后调用ConnectEx。

答案 1 :(得分:0)

即使您将接受的套接字与IOCP关联,您的工作线程仍会在GetQueuedCompletionStatus上被阻止,直到您发布“解锁”完成事件。 除非您“解锁”新套接字,否则系统将发送接收/写入操作的完成事件。 有关详细信息,请参阅Push Framework http://www.pushframework.com的源代码。它是使用IOCP的C ++网络应用程序框架。 “解锁”技巧存在于“IOCPQueue”类中。