关于IOCP投递个数问题
IOCP使用
DWORD dwBytes = 0;
DWORD dwRevelen = 0;
AcceptEx(sClient,pIOBuffer->m_sClient,pIOBuffer->m_pBuffer,dwRevelen,sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,&dwBytes,&pIOBuffer->m_ol);
方式,投递1个pIOBuffer.
当连接到达时,
BOOL bIORet = GetQueuedCompletionStatus(hCompletionPort,&dwIoSize,(LPDWORD)&pNetContent,&lpOverlapped, INFINITE);
根据逻辑,删除当前pIOBuffer,即投递到AcceptEx的pIOBuffer.删除当前对象.完成端口中,不存在AcceptEx所关联的IOBuffer.
如果客户端再连接到服务端时,完成端口不再触发任何事件.此时,客户端显示链接正常.服务端netstat -an检查链接,发现为启用状态,关闭客户端,为关闭等待.
请问,如何避免上述情况,服务端没有多余资源响应时,禁止连接.或获取到客户端连接事件.