假如协议头: 0xDEADBEEFDEADBEEFEF 9 个字节,而用于网络和主机字节序转换的函数 htonl/ntohl 最多能转换一个 long 的长度即 8 个字节


那么如何在大小端系统中传输这个自定义协议数据时,如何保证都能正确解释这个协议头(能够正确判断协议头对,自定义协议基于 TCP )

期望:
- TCP 数据:data=0xDEADBEEFDEADBEEFEF
- 小端系统:`some_func(data) == 0xDEADBEEFDEADBEEFEF`
- 大端系统:`some_func(data) == 0xDEADBEEFDEADBEEFEF`

结论:协议头正确
举报· 59 次点击
登录 注册 站外分享
4 条回复  
leonshaw 小成 2024-9-11 11:54:21
字节数组
darkengine 小成 2024-9-11 12:27:40
补齐到 16 个字节
ysc3839 小成 2024-9-11 12:33:35
别用 magic number ,用 magic bytes 即可
zhujinliang 小成 2024-9-11 12:33:59
把它看作一个 long 和一个 char ,依次判断是否相等

要我就只判断前 8 个字节是否相等,第 9 个爱是啥是啥
返回顶部