当前位置: 代码迷 >> VC/MFC >> IOCP 连接池 SOCKET 重用有关问题的请问
  详细解决方案

IOCP 连接池 SOCKET 重用有关问题的请问

热度:366   发布时间:2016-05-02 03:31:22.0
IOCP 连接池 SOCKET 重用问题的请教






------解决思路----------------------
DisconnectEx使用的正确方式是在完成所有未决的操作之后,投递,GetQueuedCompletionStatus返回之后再AcceptEx

那么大概的操作如下:
不存在PENDING IO,直接使用DisconnectEx,GetQueuedCompletionStatus完成之后AcceptEx


还存在PENDING IO(一般是超时的情况下),使用shutdown
          此时相关的接收或发送操作可能会在GetQueuedCompletionStatus返回
          如果PENDING IO被成功取消了,GetQueuedCompletionStatus返回了,使用DisconnectEx
          如果没返回,再次超时,要考虑设置SO_LINGER属性,然后直接closesocket,再创建一个新的去AcceptEx
  相关解决方案