2
在Accept或者Acceptex客户端连接以后,按照客户端设计方案,投递第一次WSARecv,在GetQueuedCompletionStatus中,将获取投递该WSARecv成功获取数据的事件通知,为了考虑数据传输的方便性,我们将获取到的数据存储到一个队列中,供后面另外独立的线程处理。
在该独立线程中,由事件唤醒,我们分析完毕数据以后,对于每个独立的数据包或者说每个客户端投递一次WSASend,正是由于这个投递的WSASend造成了服务器的GetQueuedCompletionStatus多次返回,并且数据除了第一次正确获取之外,其他都为空数据,我想应该是我投递WSASend造成了IOCP队列出现了问题。
但是始终想不明白问题在何处,以及为什么出现这个问题。
代码贴一下:
服务器端:
下载文件 (已下载 139 次)
客户端:
下载文件 (已下载 114 次)
在该独立线程中,由事件唤醒,我们分析完毕数据以后,对于每个独立的数据包或者说每个客户端投递一次WSASend,正是由于这个投递的WSASend造成了服务器的GetQueuedCompletionStatus多次返回,并且数据除了第一次正确获取之外,其他都为空数据,我想应该是我投递WSASend造成了IOCP队列出现了问题。
但是始终想不明白问题在何处,以及为什么出现这个问题。
代码贴一下:
服务器端:
下载文件 (已下载 139 次)客户端:
下载文件 (已下载 114 次)
关中刀客
2008/04/28 16:52
没有遇到过你的问题
也一直在做iocp方面的东西,呵呵,有机会多交流阿
blog:guan-zhong-dao-ke.blog.163.com
也一直在做iocp方面的东西,呵呵,有机会多交流阿
blog:guan-zhong-dao-ke.blog.163.com
huzhangyou2002 回复于 2008/04/28 17:32
哈哈 你的博客打开好慢啊
问题理论上面已经解决,近期重新更新博客文章,谢谢大家的测试
分页: 1/1
1
1
最简单的Epoll模型代码
Tips From experts-exchange And IGoo Blog


2008/04/27
15:37
2537





