【Linux】主机字节序和网络字节序

(一)问题提出:为什么要有主机字节序和网络字节序的存在?

  • 现在大多数PC机器都是小端字节序(小端存储),也称为主机字节序;但不排除有大端PC机器的存在。
  • 若在两台字节序不同的主机上传输数据时,接收端将会错误解释。

例如:小端主机发送0x0001(2字节的十进制数据1)给大端机器接收到并处理之后的数据就是0x0100(2字节十进制数据256),很明显数据输出被错误的解释。

  • 所以解决问题的方法:发送端总是把发送的数据转化成大端字节序(网络字节序)后再发送,接收端知道对方的数据采用大端字节序,接收端根据自己的字节序来决定要不要转换。这样就能保证数据解释的正确性!!

(二)字节序转换API

(1)IP地址转换

https://blog.csdn.net/xiaoxiaoguailou/article/details/121629586

(2)端口号转换

头文件:arpa/inet.h
理解记忆:htonl 缩写意思:host to net long 主机转网络长整型

函数说明
uint32_t htonl(uint32_t hostlong);主机字节序转网络字节序(长整型long int)
uint16_t htons(uint16_t hostshort);主机字节序转网络字节序(短整型short)
uint32_t ntohl(uint32_t netlong);网络字节序转主机字节序(长整型long int)
uint16_t ntohl(uint16_t netshort);网络字节序转主机字节序(短整型short)
返回值:都是转换后的结果
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值