各位大哥大姐,在线等贴。。。。。。
各位大哥、大姐:
问题是这样子的,我现在要建立一个基于Sockect的数据访问程序。我是将数据在客户端逐个发送,数据是以结构体的方式逐个发送的,每个结构体的大小为400字节,并且结构体的数目有可能是几百个。在发送结构体之前,我先将这些结构体的的总的大小发送出去。
这里已经求出了sendnum的数值
pclient->send(&sendnum,sizeof(int));
for(int i;i<sendnum;i++)//num是结构体的数目
{
pclient->send(&message[i],sizeof(Message));
}
在接受端,我先接受结构体的数目:
int recnum;
pclient->Receieve(&recnum,sizeof(num));
然后,我开辟一个很大的内存空间,同时我定义了一个很大的结构体数组:
byte *pBuf=new byte[100000];
Message messagerec[100]
接着,我接受结构体数据:
BOOL Isstate
Isstate=TRUE;
int len=0
While(Isstate)
{
if(recnum>len)
{
rec=pclient->Receieve(pBuf,sizeof(Message)*recnum);//连续接受数据,直到和服务器端发送的数据量一致
len=rec+len;
Isstate=TRUE;
}
else
{
Isstate=FALSE;
}
}
最后,我通过memcpy函数将pBuf中的数据拷贝到结构体数组中;
memcpy(messagerec,pBuf,sizeof(Message)*100);
在While 循环中,我第一次接受到的数据大小,也就是rec值大概是8000多,具体数值忘了,接着,接受剩下的值,关键问题是我在messagerec数组中只能看到前面20个(有时候是21、22)的结构体数据,剩下的数据就看不到了,但是我在发送端发送20个结构体的时候,都能接受到。这个问题已经纠结了好多天了,请大哥大姐帮忙。