本帖最后由 VisualEleven 于 2011-11-22 17:22:53 编辑

解决方案 »

  1.   

    iocp非短时间能理解透的.慢慢蛋疼。
      

  2.   

    唉,代码太乱,想给你看看,实在没那个耐心。代码凌乱,恰说明你对IOCP理解不明确。其实,有一个非常简单的方法,就是将完成端口进一步封装为一套参数比较简单的函数,然后基于这套函数二次开发。而不是将服务器业务代码和完成端口搅和在一起。  
      

  3.   


    是的,我就是这一点理解上存在问题,有点觉得矛盾。比如说,我利用pPerIOData投递一个发送操作之后,再紧接着投递一个接受操作,那么不是会立马修改掉pPerIOData的结构么?
      

  4.   


    你要想双工,就需要2个OVERLAPPED结构的对象。
      

  5.   


    没错,是挺凌乱的。看 windows核心编程里觉得代码太短小,不太实用,网上找到的示例代码又很杂乱,风格不一,看得凌乱了
      

  6.   

    其实,IOCP模型并不是很复杂。只不过有一些细节问题,可见我的博客《IOCP的几点细节》。稍微复杂一点的问题是,如何“确定性”地控制每个套接字,可以用引用计数加状态跳转的方式解决。另外一个难点是(其实不是IOCP的问题,而是重叠IO服务器程序都存在的问题),如何同步“每个套接字上的操作”,直观的想法是在每套接字上加互斥原语,但这会导致句柄数太多,这需要实现一个“调度锁”。
      

  7.   

    参考下这个啊  IOCP_API之TCP服务器编程 
    我就在这上面修改实现的