IOCP之客户端?

cceefor 2011-03-18 10:00:24
最近做了一个网络库,用IOCP管理所有的socket,可以同时作为TCP服务器和TCP客户端使用,现在服务器没有任何问题,但是客户端经常性的收不到数据接收的通知,但是对端的数据发送是成功的,这边估计也收到了数据,但是就是给不了通知,这样长时间后系统缓冲区被塞满,导致网络被堵死,客户端使用ConnectEx连接。
期盼高手解答
...全文
498 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgc7622 2011-04-17
  • 打赏
  • 举报
回复
IOCP 翻译完全就是 I/O 完成端口,这已经说明了,IOCP的应用范围,其实IOCP是一个Windows下对于线程进行高效的调度机制而已。

在网站“掰掰开发”的相关帖子中就可以看到 IOCP不仅可以在网络传输中使用。

xengine-qyt 2011-04-15
  • 打赏
  • 举报
回复
IOCP 一般P2P 的时候用客户端比较好, 要不然就是浪费。 还有 IOCP是不能管理套接字的!
smwhotjay 2011-04-15
  • 打赏
  • 举报
回复
client 用阻塞+thread的就行了. WSASynSelect和WSAEventSelect也很好. 反正一个也要浪费窗口,一个浪费线程和Event对象.
zgc7622 2011-04-14
  • 打赏
  • 举报
回复
使用IOCP做客户端是有一定的使用加之的,它可以瞬间模拟大量的连接,同时IOCP客户端也可以提高一定的处理效率。
楼主可以把代码贴出来看看。
我也是用IOCP写的客户端,目前多个项目中使用,运行很稳定。
Sou2012 2011-03-21
  • 打赏
  • 举报
回复
客户端使用select就足够了。
cceefor 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaoguailong3 的回复:]

通知一般是有个线程一直接收信息,假如接收到了会通知自己指定的函数,可能是线程有问题
[/Quote]
IOCP用的是线程池,线程数量为:CPU个数*2
cceefor 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jwybobo2007 的回复:]

引用 4 楼 cceefor 的回复:
引用 2 楼 visualeleven 的回复:

确定数据已经成功到达客户端?客户端也用的IOCP模型?

对端发送成功,这边因为收不到通知,所以过一段时间就投递接收事件时会出现WSAENOBUFS(10055)的错误,很明显是缓存区满了,所以我认为是收到了,但是IOCP不给通知


这个错误不是表示socket接收缓冲区满了,而是表示没……
[/Quote]
连接没有断开,因为发送没有问题,就是收不到接收数据的通知,所以应该不是socket资源耗尽的问题
xiaoguailong3 2011-03-18
  • 打赏
  • 举报
回复
通知一般是有个线程一直接收信息,假如接收到了会通知自己指定的函数,可能是线程有问题
jwybobo2007 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cceefor 的回复:]
引用 2 楼 visualeleven 的回复:

确定数据已经成功到达客户端?客户端也用的IOCP模型?

对端发送成功,这边因为收不到通知,所以过一段时间就投递接收事件时会出现WSAENOBUFS(10055)的错误,很明显是缓存区满了,所以我认为是收到了,但是IOCP不给通知
[/Quote]

这个错误不是表示socket接收缓冲区满了,而是表示没有更多的socket资源可用,这个资源包括无法分配更多的socket,没有任何多余的内存供使用等等.你是否出现了socket句柄耗尽的问题?比如不停的connect,但是失败后没有close的情况
cceefor 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 visualeleven 的回复:]

确定数据已经成功到达客户端?客户端也用的IOCP模型?
[/Quote]
对端发送成功,这边因为收不到通知,所以过一段时间就投递接收事件时会出现WSAENOBUFS(10055)的错误,很明显是缓存区满了,所以我认为是收到了,但是IOCP不给通知
cceefor 2011-03-18
  • 打赏
  • 举报
回复
应该是成功了,投递的时候不成功我会断连接的
Eleven 2011-03-18
  • 打赏
  • 举报
回复
确定数据已经成功到达客户端?客户端也用的IOCP模型?
fishion 2011-03-18
  • 打赏
  • 举报
回复
客户端没什么并发量,不需要用IOCP模型了,如果你真要用,或者查看下是不是接收事件每次都投递成功了
  • 打赏
  • 举报
回复
smwhotjay 2011-03-18
  • 打赏
  • 举报
回复
这个 “估计” 要把它变成”肯定“ !
cceefor 2011-03-18
  • 打赏
  • 举报
回复
不能这么沉了,问题很急,希望高手不要客气~

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧