我在CSocket编程中有一段接收函数代码,如下:
char buff[10]={0};
CString msg;
int ret=0;
for(;;)
{
ret=recSo.Receive(buff,10);
if(ret==0)
break;
msg+=buff;
}
每次从缓存读取10个字符,全添加给msg。现在的问题是:当我发送的数据是小于等于9个字符的时候,接收正常;当发送10个字符的时候,数据都能接到,但后面多了几位乱码;当发送超过10个字符的时候,例如发送“1234567890qwe”,接收到的是“1234567890乱码qwe4567890乱码”,接收数据很混乱,而且qwe替代了第一次接收的123,后面还多了几个4567890,请问是什么原因呀???比较急,谢谢~!!
char buff[10]={0};
CString msg;
int ret=0;
for(;;)
{
ret=recSo.Receive(buff,10);
if(ret==0)
break;
msg+=buff;
}
每次从缓存读取10个字符,全添加给msg。现在的问题是:当我发送的数据是小于等于9个字符的时候,接收正常;当发送10个字符的时候,数据都能接到,但后面多了几位乱码;当发送超过10个字符的时候,例如发送“1234567890qwe”,接收到的是“1234567890乱码qwe4567890乱码”,接收数据很混乱,而且qwe替代了第一次接收的123,后面还多了几个4567890,请问是什么原因呀???比较急,谢谢~!!
char buff[11];
buff[10] = 0;
然后每次还是接受10个字符
按你这么定义,我能正确接受11个字符,小于11个不行,有乱码,大于11个后,出现的问题就是我刚才所说的替代,发送“1234567890qWW”,接收到的是“123456789qWW3456789”,郁闷呀
CString msg;
int ret=0;
for(;;)
{
ret=recSo.Receive(buff,10);
if(ret==0)
break;
buff[ret] = 0;
msg+=buff;
}
CString msg;
int ret=0;
for(;;)
{
ret=recSo.Receive(buff,10);
if(ret==0)
break;
buffer[ret]='\0';
msg+=buff;
}