socket 如何按大小分割数据包接收数据
比如发过来有1100byte,而我是按每256byte接收的,如何分包组包接收?好像用strlen函数算出来的是以'\0'截止的,可是网络数据可能有意想不到的0出现,如何...
比如发过来有1100byte,而我是按每256byte接收的,如何分包组包接收?好像用strlen函数算出来的是以'\0'截止的,可是网络数据可能有意想不到的0出现,如何做?而且在组包过程中,用strcat也是按'\0'来计算的。那么这个分包与组包的过程具体如何做呢?求解!
我的问题在CSDN有详细地描述,你们看下:
http://bbs.csdn.net/topics/390428010?page=1#post-394223773 展开
我的问题在CSDN有详细地描述,你们看下:
http://bbs.csdn.net/topics/390428010?page=1#post-394223773 展开
2个回答
展开全部
unsigned char buf[256];
unsigned char *p = NULL;
int len;
size = 0;
while (1) {
len = recv(s, buf, 256, 0);
if (len <= 0) ; //blah blah blah
size += len;
p = realloc(p, size);
memcpy(p+size-len, buf, len);
if (len != 256)
break;
}
//现在p指向整个报文,记得free
unsigned char *p = NULL;
int len;
size = 0;
while (1) {
len = recv(s, buf, 256, 0);
if (len <= 0) ; //blah blah blah
size += len;
p = realloc(p, size);
memcpy(p+size-len, buf, len);
if (len != 256)
break;
}
//现在p指向整个报文,记得free
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询