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

  • 现在大多数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)
返回值:都是转换后的结果

【Linux】主机字节序和网络字节序相关推荐

  1. linux网络编程一:主机字节序与网络字节序的的判断

     linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...

  2. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs

    Part 1: htons函数具体解释      在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...

  3. 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】

    (转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...

  4. Linux网络编程——字节序与网络字节序

    说明:   本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉.   QQ 群 号:513683159 [相 ...

  5. linux大端小端命令,linux的大小端、网络字节序问题

    linux的大小端.网络字节序问题 总结:1.80X86使用小端法,网络字节序使用大端法. 2.二进制的网络编程中,传送数据,最好以unsigned char, unsigned short, uns ...

  6. 字节序 主机字节序与网络字节序互相转换

    目录 1.什么是字节序? 2.字节序分类 3.为什么要有大端字节序和小端字节序? 4.主机字节序和网络字节序 5.主机字节序与网络字节序的转换 6.怎么判断自己的主机是小端字节序还是大端字节序呢? 7 ...

  7. 主机字节序和网络字节序

    1.大端字节序和小端字节序: 大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址. 小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址. 以0x12345678为例: ...

  8. 本地字节序和网络字节序

    本地字节序和网络字节序 字节序指不同的CPU访问内存中多字节数据的时候,存在大小端的问题,并且一定是访问多字节数据的时候才会存在大小端的问题,如果CPU访问的是字符串,则不存在大小端的问题: 那么如何 ...

  9. 本地字节序与网络字节序的相互转换(IP地址、端口号)

    一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...

最新文章

  1. TSC打印机编程C#
  2. 前端领域的BEM到底是什么
  3. Linux原始套接字实现分析---转
  4. 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值
  5. wsl2启动桌面_WSL2使用xrdp实现图形桌面
  6. 线程通信之多个线程循环执行,(A线程执行5次,B线程执行10次,C线程执行15次)...
  7. 设计类时需要注意的6个地方
  8. 解决警告“ld: warning: directory not found for option”
  9. 学习总结 java Iterator迭代器练习
  10. oracle top 5 timed events,oracle gcr sleep in the Top Timed Events in report
  11. 关于新APP,从交底书入手
  12. 方维众筹1.61 php5.5,最新方维众筹1.61完美解密版源码 综合型众筹产品+理财+公益+股权+微信+商城+PC+WAP运营版...
  13. 金蝶数据库(质疑)解决方法
  14. 为什么有机棉这么贵,还深受欢迎?
  15. 乐安全 支持x86_不用苦等五一 四款近期主打平板推荐
  16. 中国宠物协会会员查询介绍
  17. 【单片机学习笔记】(6):字符串处理函数、变量的三种情况、用函数实现模块化程序设计、晶振与延时、指针
  18. ROOT/RStringView.hxx:32:37: error: ‘experimental’ in namespace ‘std’ does not name a type
  19. 2021恒生电子面经(校招实习)
  20. python 在屏幕上点击特定按钮或图像

热门文章

  1. 健康保险公司如何进行客户体验管理XM?
  2. Popcap Game Framework 编译与运行
  3. SIGGRAPH RigNet 骨架绑定
  4. mysql创建桌面快捷方式
  5. Android Studio离线配置Grade
  6. Kakaotalk PC端无法登录,错误代码50151
  7. 外媒专家谈2022年电商趋势—CRM至关重要!
  8. 细说协程零一、协程的概念
  9. OpenWRT的Feeds分析学习
  10. 关于Anaconda网络问题 An HTTP error occurred when trying to retrieve this URL.