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




------解决思路----------------------
DisconnectEx使用的正确方式是在完成所有未决的操作之后,投递,GetQueuedCompletionStatus返回之后再AcceptEx
那么大概的操作如下:
不存在PENDING IO,直接使用DisconnectEx,GetQueuedCompletionStatus完成之后AcceptEx
还存在PENDING IO(一般是超时的情况下),使用shutdown
此时相关的接收或发送操作可能会在GetQueuedCompletionStatus返回
如果PENDING IO被成功取消了,GetQueuedCompletionStatus返回了,使用DisconnectEx
如果没返回,再次超时,要考虑设置SO_LINGER属性,然后直接closesocket,再创建一个新的去AcceptEx
------解决思路----------------------
DisconnectEx使用的正确方式是在完成所有未决的操作之后,投递,GetQueuedCompletionStatus返回之后再AcceptEx
那么大概的操作如下:
不存在PENDING IO,直接使用DisconnectEx,GetQueuedCompletionStatus完成之后AcceptEx
还存在PENDING IO(一般是超时的情况下),使用shutdown
此时相关的接收或发送操作可能会在GetQueuedCompletionStatus返回
如果PENDING IO被成功取消了,GetQueuedCompletionStatus返回了,使用DisconnectEx
如果没返回,再次超时,要考虑设置SO_LINGER属性,然后直接closesocket,再创建一个新的去AcceptEx