永发信息网

C++ sendto 发送带有 0x00的数据,会结束数据

答案:4  悬赏:70  手机版
解决时间 2021-03-11 14:41
unsigned char p[5]={0x81,0x00,0xf1,0x81,0x03};
char *Message;
strcpy(Message,(const char*)p);
strcpy(realmessage, Message);
发送端
int isend = sendto(PrimaryUDP, (const char *)&MessageHead, sizeof(MessageHead), 0, (const sockaddr*)&remote, sizeof(remote));//首先发送长度
isend = sendto(PrimaryUDP, (const char *)&realmessage, MessageHead.iStringLen, 0, (const sockaddr*)&remote, sizeof(remote));//再发送消息内容
接收端
int iread1 = recvfrom(PrimaryUDP, comemessage, 256, 0, (sockaddr *)&remote, &sinlen);//接收发送的消息

问题是接收端 0x00之后的数据 没有收到,只能收到0x00之前的数据,怎么搞,求大神,有代码最好
最佳答案
/0表示结束已经结束了 有2种解决办法,
第一种, 发送前先发送 通信内容的长度,接收方按长度接收 这样就不会收不到,但是如果意外通信中断可能造成卡死
第二种 提前将0x00替换为特定的值,接收后再替换回来, 这个办法要考虑替换值本身,比如用0xff代替0x00那么0xff自身也需要处理
全部回答
/0表示结束符,表示流的结束,所以接收端以为已经结束了 有2种解决办法, 第一种, 发送前先发送 通信内容的长度,接收方按长度接收 这样就不会收不到,但是如果意外通信中断可能造成卡死 第二种 提前将0x00替换为特定的值,接收后再替换回来, 这个办法要考虑替换值本身,比如用0xff代替0x00那么0xff自身也需要处理
不要一次发送,分成多次发送 int sendbuf(int socket, char *buffer , int sendlen ) { int len=0; int one=1024 ; do { if ( sendlen-len > 1024 ) one=1024; else one=sendlen-len ; send(socket, buffer, one , 0); len += one ; buffer += one ; }while ( len < sendlen ) ; return len ; }
unsigned char p[5]={0x81,0x00,0xf1,0x81,0x03}; char *Message; strcpy(Message,(const char*)p); strcpy(realmessage, Message); 发送端 int isend = sendto(PrimaryUDP, (const char *)&MessageHead, sizeof(MessageHead), 0, (const sockaddr*)&remote, sizeof(remote));//首先发送长度 isend = sendto(PrimaryUDP, (const char *)&realmessage, MessageHead.iStringLen, 0, (const sockaddr*)&remote, sizeof(remote));//再发送消息内容 接收端 int iread1 = recvfrom(PrimaryUDP, comemessage, 256, 0, (sockaddr *)&remote, &sinlen);//接收发送的消息 问题是接收端 0x00之后的数据 没有收到,只能收到0x00之前的数据,怎么搞,求大神,有代码最好
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
摩托车化油器下面的风门开关,往上扳是开还是
男,1982年的,求大师看手相
为什么我家电脑宽带20m玩cf却很慢?和电脑配置
小田坝地址有知道的么?有点事想过去
“己所不欲,勿施于人”。意思是自己不愿意做
怎么对付,脾气非常的暴燥之人。
塞拉赞恩军需官在哪?塞拉赞恩军需官坐标
为什么玩龙之谷走路就会出现输入状态啊(在线
家穷人丑顺口溜大全
时字多少笔
X876在什么地方啊,我要过去处理事情
探究实验题:做观察唾液淀粉酶的消化作用实验
h1z1怎么根据声音判断是不是大甲
手机百度贴吧怎么转发帖子
梦见河流涨水
推荐资讯
从澄溪到合尤二中怎么走
港澳游需要准备些什么?
贷款跑路了有什么后果?
汕头动车站在哪里
听英语单词,听音乐用什么设备
医院的病人服洗涤前怎么消毒
向三寸天堂一样伤感好听的歌曲
为什么要设计四足机器人舞蹈动作
康莉窗帘在什么地方啊,我要过去处理事情
森鑫木业地址在什么地方,想过去办事
天天锻炼为什么还长芥子
梦见蝴蝶化为男人
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?