Пример #1
0
int SSClient::RecvMsg( Packet & packet)
{
	DataBuffer * buff = packet.GetBuffer();

	//消息头接收
	int iRecv = SockRecv( buff->GetWritePtr(), PACKET_HEADER_LENGTH);
	if( iRecv < 0 || iRecv != PACKET_HEADER_LENGTH )
		return -1;

	//移动 写指针
	buff->MoveWritePtr(iRecv);

	//解包头
	packet.UnpackHeader();

	//包体长度
	int iLeft = packet.Length- PACKET_HEADER_LENGTH;
	if( 0 == iLeft )
		return 0;

	//消息体接收
	iRecv = SockRecv( buff->GetWritePtr(), iLeft );
	if( iRecv != iLeft )
		return -1;

	//移动 写指针 
	buff->MoveWritePtr(iRecv);

	return 0;
}