18,356
社区成员
发帖
与我相关
我的任务
分享
DWORD PostRead(PerIoOpData* pIoOpData, PerHandleCpKey* pCpKey)
{
// 省略一堆变量声明
// 使用 WSARecv() 投递 Overlapped IO 接收操作
dwErr = WSARecv(pCpKey->sAcpt, &(pIoOpData->wsabuf), 1, &bytesRecvd, &flag,
&(pIoOpData->ol), NULL);
if ( SOCKET_ERROR == dwErr )
{
dwErr = WSAGetLastError();
// 这里为 WSA_IO_PENDING,说明投递 Overlapped IO 成功
}
else
{
// WSARecv() 操作立即完成,此时 bytesRecvd 中保存接收的字节数
_ftprintf(stderr, _T("WSARecv() operation completes immediately\n"));
ProcessRead(pIoOpData, pCpKey, bytesRecvd);
}
dwErr = ERROR_SUCCESS;
RET:
return dwErr;
}