服务端发送:
for(iter=SocketMessage.begin();iter!=SocketMessage.end ();iter++)
{
CLSLOG2( " 服务端发送的x坐标:%3d\n",iterp->second.packetHdr.pos.x ); 生成服务端日志文件
iterp->second.packetHdr.type='B';
nErrCode=send(iter->first, (char*)&iterp->second,sizeof(iterp->second), 0);//发送数据类型
if(nErrCode=SOCKET_ERROR)
{
return ;
}
//send(iter->first, (char*)&iterp->second.sock,sizeof(iterp->second.sock), 0);
}
}客户端接收: int nTotalLen=0;
int nReadLen;
char recvbuf[1024];
memset(recvbuf,0,sizeof(recvbuf));
nReadLen=recv(wParam,(char*)&recvbuf,sizeof(recvbuf),0);
while(nTotalLen<sizeof(recvbuf))
{
nReadLen=recv(wParam,(char*)&recvbuf,1,0); if(nReadLen==SOCKET_ERROR)
{
if (WSAGetLastError() == WSAEWOULDBLOCK)
{
break;
}
else // another error
{
return ;
}
}
else if(nReadLen==0)
{
Sleep(100);
}
nTotalLen+=nReadLen;
} memcpy(&m_MayiClient.pHdr,recvbuf,sizeof(m_MayiClient.pHdr));//接收数据给m_MayiServer.pHdr
if(m_MayiClient.pHdr.type=='B')
{
CLSLOG2( "客户端接收数据x坐标:%3d\n",m_MayiClient.pHdr.pos.x); 生成日志文件
m_MayiClient.SaveSocketMessage(); }查看文件服务端日志:产生了很多行,客户端:只产生几行。产生的文件感觉服务端正常。而客户端接收的数据接收不正常好像卡在那里啦!
for(iter=SocketMessage.begin();iter!=SocketMessage.end ();iter++)
{
CLSLOG2( " 服务端发送的x坐标:%3d\n",iterp->second.packetHdr.pos.x ); 生成服务端日志文件
iterp->second.packetHdr.type='B';
nErrCode=send(iter->first, (char*)&iterp->second,sizeof(iterp->second), 0);//发送数据类型
if(nErrCode=SOCKET_ERROR)
{
return ;
}
//send(iter->first, (char*)&iterp->second.sock,sizeof(iterp->second.sock), 0);
}
}客户端接收: int nTotalLen=0;
int nReadLen;
char recvbuf[1024];
memset(recvbuf,0,sizeof(recvbuf));
nReadLen=recv(wParam,(char*)&recvbuf,sizeof(recvbuf),0);
while(nTotalLen<sizeof(recvbuf))
{
nReadLen=recv(wParam,(char*)&recvbuf,1,0); if(nReadLen==SOCKET_ERROR)
{
if (WSAGetLastError() == WSAEWOULDBLOCK)
{
break;
}
else // another error
{
return ;
}
}
else if(nReadLen==0)
{
Sleep(100);
}
nTotalLen+=nReadLen;
} memcpy(&m_MayiClient.pHdr,recvbuf,sizeof(m_MayiClient.pHdr));//接收数据给m_MayiServer.pHdr
if(m_MayiClient.pHdr.type=='B')
{
CLSLOG2( "客户端接收数据x坐标:%3d\n",m_MayiClient.pHdr.pos.x); 生成日志文件
m_MayiClient.SaveSocketMessage(); }查看文件服务端日志:产生了很多行,客户端:只产生几行。产生的文件感觉服务端正常。而客户端接收的数据接收不正常好像卡在那里啦!
while(nTotalLen <sizeof(recvbuf))nReadLen=recv(wParam,(char*)&recvbuf,1,0); nTotalLen+=nReadLen; 我算着,这个nTotalLen初值是0,满足while(nTotalLen <sizeof(recvbuf)),可是接收到数据后,一直在加,所以这个条件就不成立了,自然就不能接收数据了;