主动断开连接时,调用 closesocket(s);
然而,调用 closesocket(s); 后,完成端口并不会收到通知。而原先 postRecv 在完成端口上的 perContext 要如何释放?
如果不释放,每 closesocket(s) 一次,就会有 一个 perContext 一直绑定在 完成端口上。

解决方案 »

  1.   

    使用GetQueuedCompletionStatus, 当第二个参数lpNumberOfBytesTransferred返回值为0时,说明客户端关闭了
      

  2.   

    再调用一次 
    CreateIoCompletionPort(
            hIoCompletion,
            s,
            0,
            0);然后在closesocket(s)
    不知道行么?请指教
      

  3.   

    closesocket主动断开连接的时候,如果存在未完成的WSASend或者WSARecv,完成端口是会收到通知的
    只有不存在投递的时候才会收不到通知
    楼主理解有误
    -------------------------------------------------------
    广告:VC/WinAPI 网络/多线程讨论 QQ群, 群号:41356711