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之前的数据,怎么搞,求大神,有代码最好
C++ sendto 发送带有 0x00的数据,会结束数据
答案:4 悬赏:70 手机版
解决时间 2021-03-11 14:41
- 提问者网友:十年饮冰
- 2021-03-10 18:06
最佳答案
- 五星知识达人网友:逃夭
- 2021-03-10 19:07
/0表示结束已经结束了 有2种解决办法,
第一种, 发送前先发送 通信内容的长度,接收方按长度接收 这样就不会收不到,但是如果意外通信中断可能造成卡死
第二种 提前将0x00替换为特定的值,接收后再替换回来, 这个办法要考虑替换值本身,比如用0xff代替0x00那么0xff自身也需要处理
第一种, 发送前先发送 通信内容的长度,接收方按长度接收 这样就不会收不到,但是如果意外通信中断可能造成卡死
第二种 提前将0x00替换为特定的值,接收后再替换回来, 这个办法要考虑替换值本身,比如用0xff代替0x00那么0xff自身也需要处理
全部回答
- 1楼网友:不如潦草
- 2021-03-10 22:50
/0表示结束符,表示流的结束,所以接收端以为已经结束了 有2种解决办法,
第一种, 发送前先发送 通信内容的长度,接收方按长度接收 这样就不会收不到,但是如果意外通信中断可能造成卡死
第二种 提前将0x00替换为特定的值,接收后再替换回来, 这个办法要考虑替换值本身,比如用0xff代替0x00那么0xff自身也需要处理
- 2楼网友:猎心人
- 2021-03-10 21:35
不要一次发送,分成多次发送
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 ;
}
- 3楼网友:渊鱼
- 2021-03-10 20:23
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之前的数据,怎么搞,求大神,有代码最好
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯