UDP通信,发送和接收的数据里有0x00怎么办
/**发送端*/
char sendbuf[20]={0xE7,0x10,0x25,0x85,0x0C,0x01,0x19,0xB3,0x02,0x05,0xC9,0x03,0x00,0x19,0x04,0x00,0x65};
sendto(sockSrv,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&addrSrv,len);
/**接收端*/
recvfrom((*psockSrv),recvBuf_GW,100,0,(SOCKADDR*)&addrClient,&len));
/**用于输出字符的ASCII码*/
char*ptr=recvBuf_GW;
while (*(ptr)!='\0')
{
printf("%X ",(unsigned char)*ptr++);
}
结果每次输出结果都只到0x03,就是说,0x00及其以后的数据都没有收到,请问这个问题该怎么解决
[解决办法]
while (*(ptr)!='\0') 这个不要以'\0'为结束
你可以自定义个一个结束字符!!来表示数据的末位!!
[解决办法]
这个不是字符串,不能用0X00来作为结尾的。消息是有长度的。
[解决办法]
应该用长度,而不是内容是否为0,来处理二进制数据。
[解决办法]
用recvfrom的返回值来作为接收缓存recvBuf_GW的实际长度,根据这个实际长度来输出你接收到的数据就不会出错
int len = recvfrom(...);
int i = 0;
while(i < len)
{
printf("%X ",(unsigned char)*ptr++);
i++;
}