完成端口模型里如何知道接收的数据大小
我服务端使用的完成端口,准备写一个接收客户端传送文件的程序。因为文件很大,一次只传部分字节,那我服务端怎么知道一次实际传送来的数据有多少?
这是我接收函数:
BOOL CIOCPServer::PostRecv(CPerSocketData *pSockData)
{
ASSERT(pSockData != NULL);
WSABUF wsaBuf = {0};
COverLappedEx *m_pOverLap = new COverLappedEx(IO_TYPE_READ);
m_ArrOverLapEx.AddTail(m_pOverLap);
wsaBuf.buf = m_pOverLap->m_szBuf;
wsaBuf.len = m_pOverLap->m_len;
DWORD dwBytesRecv = 0, dwFlags = 0;
int iRet = WSARecv(pSockData->m_Socket, &wsaBuf, 1, &dwBytesRecv, &dwFlags, &(m_pOverLap->m_OLap), NULL);
if (iRet != NO_ERROR) {
if (WSAGetLastError() != WSA_IO_PENDING) {
return FALSE;
}
}
return TRUE;
}