客户端处理服务端数据包的问题
这两天要做一个客户端测试程序,
当客户端向服务端请求登陆成功后,
服务端会连续向客户端发送三个数据包,
1.验证成功数据包
2.登陆完成数据包
3.用户列表数据包
我利用recv接收时,接收到了3个数据包。
但是当接收第二条数据包时,里面却包含了第三条数据包的数据,如图:
而第三条数据包过来时,就显示为空了,如图:
以下为客户端接收时的部分代码:
char recvBuf[1024];
int len=0;
int dataLen=0;
DequeData* pDequeData=0;
while (1)
{
memset(recvBuf,0,1024);
len=recv(sockClient,recvBuf,sizeof(recvBuf), 0);
if (len != SOCKET_ERROR)
{
dataLen=*(WORD*)(recvBuf+0);
printf("数据包长度:%d\n",dataLen);
pDequeData=new DequeData;
pDequeData->dataLens=dataLen;
memcpy(pDequeData->buff,recvBuf,dataLen);
recvDeque.push_back(pDequeData);
}
else
{
printf("%d\n",len);
}
}