概述
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通讯注意所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复