服务器是采用完成端口模型,客户机是采用事件选择模型,请问当客户断开的时候,服务器是怎样将与客户机相链接的socket句柄关闭掉:如果是采用事件选择的话,那将会产生一个FD_CLOSE网络事件,但是采用完成端口的话,那将会怎样触发呢?我现在的设想是这样的:链接上的socket与完成端口相关联,刚开始处于WSARecv状态,当客户断开的时候,就判断WSARecv受到的字节是否为0(也就是GetQueuedCompletionStatus中的lpNumberOfBytes是否为0),是的话,就关闭该socket句柄,不知着想法可以吗?

解决方案 »

  1.   

    first see this,maybe help you
    http://www.csdn.net/develop/Article/15/15211.shtm
      

  2.   

    OnClose
    FD_CLOSE
    【嘟嘟oοО○●哇靠!!!快让开】
         ╭══╮老婆!开车罗`坐好啊
        ╭╯五档║老公!开慢点`我兴奋 
        ╰⊙═⊙╯。oо○ 压死了不赔! 
      

  3.   

    但是怎样触发呢?WSARecv里面可以带个OVERLAPPED参数所以可以触发,WSASend同理,但是OnClose,FD_CLOSE?
      

  4.   

    你需要预先递交一个read请求,这样就可以检测到了