本帖最后由 VisualEleven 于 2011-03-18 10:10:33 编辑

解决方案 »

  1.   

    客户端没什么并发量,不需要用IOCP模型了,如果你真要用,或者查看下是不是接收事件每次都投递成功了
      

  2.   

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

  3.   

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

  4.   


    这个错误不是表示socket接收缓冲区满了,而是表示没有更多的socket资源可用,这个资源包括无法分配更多的socket,没有任何多余的内存供使用等等.你是否出现了socket句柄耗尽的问题?比如不停的connect,但是失败后没有close的情况
      

  5.   

    连接没有断开,因为发送没有问题,就是收不到接收数据的通知,所以应该不是socket资源耗尽的问题
      

  6.   

    IOCP用的是线程池,线程数量为:CPU个数*2
      

  7.   

    使用IOCP做客户端是有一定的使用加之的,它可以瞬间模拟大量的连接,同时IOCP客户端也可以提高一定的处理效率。
    楼主可以把代码贴出来看看。
    我也是用IOCP写的客户端,目前多个项目中使用,运行很稳定。
      

  8.   

    client 用阻塞+thread的就行了. WSASynSelect和WSAEventSelect也很好. 反正一个也要浪费窗口,一个浪费线程和Event对象.
      

  9.   

    IOCP 一般P2P 的时候用客户端比较好, 要不然就是浪费。 还有 IOCP是不能管理套接字的!
      

  10.   

    IOCP 翻译完全就是 I/O 完成端口,这已经说明了,IOCP的应用范围,其实IOCP是一个Windows下对于线程进行高效的调度机制而已。在网站“掰掰开发”的相关帖子中就可以看到 IOCP不仅可以在网络传输中使用。