在完成端口操作同时WSARecv和WSASend的时候,客户端关闭,会不会收到两次关闭信息?
yahle 2006-09-25 09:06:22 ret = GetQueuedCompletionStatus(pthis->m_hIocp, &berByte, (LPDWORD)&re, (LPOVERLAPPED *)&pOverlap, INFINITE);
if (berByte == 0)
{
// 客户端断开连接
pthis->OnClose(re);
OVERLAPPEDPLUS *olp = (OVERLAPPEDPLUS *)pOverlap;
closesocket(olp->s);
delete olp; // 释放 与socket绑定的结构体变量
continue;
}
上面的是在完成端口失败时处理的代码,因为要接受客户端的信息,所以WSARecv都是一直存在着的。如果这时在调用WSASend的时候,客户端突然关闭,请问这个时候,if (berByte == 0)里的内容会不会被执行两次?