socket数据分包传送问题
用socket分包传输数据,只有第一个包能收到,后面的数据包都丢失了,但是在本机上同时运行server端和client端来分包传输数据却没有问题,请问这是怎么回事?以下是分包发送的代码。
SendMsg(BYTE* vIn,DWORD vLen)
{
WaitForSingleObject(m_hSendSema,INFINITE);
BYTE senddata[65535];
SocketMsgHead* head = (SocketMsgHead*)senddata;
head->ucQxFrameHead = 0x7E;
head->dwTotalLen = vLen;
head->wPacketNum = 1;
head->wPacketNO = 1;
head->wQxFrameLen = vLen;
if(vLen<=1024*60)
{
memcpy(senddata+sizeof(SocketMsgHead),vIn,vLen);
if(m_LinkState == TRUE)
{
if(Send(senddata,vLen+sizeof(SocketMsgHead)) == 0)
{
m_LinkState = FALSE;
}
}
}///
else //拆包发送
{
int i= 0;
head->wPacketNum = vLen/(1024*60) +1;
head->wQxFrameLen = 1024*60;
for(i=0;i<vLen/(1024*60);i++)
{
head->wPacketNO = i+1;
memcpy(senddata+sizeof(SocketMsgHead),vIn + i*1024*60,1024*60);
if(m_LinkState == TRUE)
{
if(Send(senddata,1024*60+sizeof(SocketMsgHead)) == 0)
{
m_LinkState = FALSE;
}
else
{
// Sleep(100);
continue;
}
}
} ///for
////下面发送最后一包
head->wPacketNO = i+1;
head->wQxFrameLen = vLen-i*1024*60;
memcpy(senddata+sizeof(SocketMsgHead),vIn + i*1024*60,vLen-i*1024*60);
Send(senddata,vLen-i*1024*60+sizeof(SocketMsgHead));
}
ReleaseSemaphore(m_hSendSema,1,NULL);
}