69,373
社区成员
发帖
与我相关
我的任务
分享
/************************************************************************/
/* desc: 接收数据包
/* packHead: 包头
/* packHead: 接受包的数据结构,包含包头。
/************************************************************************/
bool MySocket::RecvPacket( PacketHead& packHead, Packet& pack )
{
if ( packHead.length == 0)
return true;
int nRecvBytes = 0;
int ret;
memcpy(&pack, &packHead, HEADSIZE);// 把包头填充到接受包的最前端
while ( nRecvBytes < packHead.length)
{
if ( -1 == ( ret = recv(m_socket, (char*)(&pack)+HEADSIZE+nRecvBytes,
packHead.length-nRecvBytes, MSG_NOSIGNAL) ) )
{ // 失败
return false;
}
nRecvBytes += ret;
}
return ( nRecvBytes == packHead.length );
}