接受数据缓冲区的问题。
pBuffer=new char[lTotalSize];//lTotalSize是一个定值1600120
long iTemp = 0;//存储已接受数据的大小
int rcv;
while(1)
{
rcv = recv(s,buffer,1024,0);
if (rcv <= 0)
{
break;
}
for (long i=0;i<rcv;i++)
{
pBuffer[i+iTemp] = buffer[i];
}
if(iTemp>lTotalSize) //为什么每次iTemp的数据大小总是会大于lTotalSize得数据大小
{
MessageBox("iTemp>lTotalSize");
}
iTemp+=rcv;
if(iTemp==lTotalSize)
{
break;
}
}
应为是传输实时视频数据,所以是一个连续发送连续接受的过程。
lTotalSize是一个定值1600120,经过几次recv接受同一个包,结果iTemp的数据大小总是会大于lTotalSize得数据大小。在发送端发送的也是1600120这个大小的数据。pBuffer[i+iTemp] = buffer[i];总是会因为数组越界问题,导致出错。