永发信息网

网络传输结构体,字节序,大小端怎么解决

答案:2  悬赏:20  手机版
解决时间 2021-01-30 04:28
  • 提问者网友:末路
  • 2021-01-29 12:00
网络传输结构体,字节序,大小端怎么解决
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-01-29 13:29
1.

C/C++ code
#pragma pack(push)
#pragma pack(1)
//定义结构体
#pragma pack(pop)

2. 传输的时候都使用网络字节序,这是标准的做法。
发送方htonl/s 接收方ntohl/s
全部回答
  • 1楼网友:酒醒三更
  • 2021-01-29 14:01
结构体中的数据并不是像普通的char数组那样数据是连续排布的。结构体有一个内存对齐的问题,不同的操作系统不同的编译器不同的cpu对结构体对齐的策略都不一样。也就是说,要想写出通用的网络数据传输程序,就不能把结构体直接在网上传输。需要预先定义一个基于你自己应用程序的数据协议来,然后把结构体中的成员逐一复制到一个char数组中,然后将这个char数组发送出去,接收端需要逐个字节的解析收到的数据,按照协议规定,将数据在复制到接收端的相应结构体中去。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯