c++与java进行socket通信时注意事项 因为java发送的都是网络字节序(big-endium),而c++是主机字节序(little-endium),所以当消息中有整型,浮点型(应尽量避免使用)的时候需要用htonl,htons,ntohl,ntohs等函数转换一下,字符串由于是单字节排序的不需要转换,但应注意c++字符串是以'/0'作为结束符的,如果找不到'/0'可能会出现一些乱码,所以接收的时候可以分配一个length+1的buffer用来接收消息.
举例:c++ server, java client,假设开发的是c++ server,那么:
java client--------->c++ server: c++ server需要调用ntohs,ntohl
c++ server--------->java client: c++ server需要调用htons,htonl
至于浮点型可以使用以下的函数转换:
float tcp_htonf(float f)
{
unsigned char *p, p0, p1;
if(htons(1) ==1) return f;
p =(unsigned char *)&f;
p0 =p[0];
p1 =p[1];
p[0] =p[3];
p[3] =p0;
p[1] =p[2];
p[2] =p1;
return f;
}
float tcp_ntohf(float f)
最后
以上就是失眠小兔子最近收集整理的关于java和lora通信_Java与C++Socket通讯注意的全部内容,更多相关java和lora通信_Java与C++Socket通讯注意内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复