【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) |
— |
返回值:都是转换后的结果
|
【Linux】主机字节序和网络字节序相关推荐
- linux网络编程一:主机字节序与网络字节序的的判断
linux网络编程一:主机字节序与网络字节序的的判断(1)现代CPU的累加器一次能装载至少4字节(32位),即一个整数.那么这4字节在内存中排列的顺序将影响它被累加器装载成的整数值,这就是字节序问题 ...
- 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs
Part 1: htons函数具体解释 在Linux和Windows网络编程时需要用到htons和htonl函数,用来将主机字节顺序转换为网络字节顺序. 在Intel机器下,执行以下程序 i ...
- 主机字节序与网络字节序的转换函数:htonl、ntohl、htons、ntohs【转】
(转自:https://blog.csdn.net/kulala082/article/details/53431473) Part 1: htons函数具体解释 在Linux和Windows网络编程 ...
- Linux网络编程——字节序与网络字节序
说明: 本文章旨在总结备份.方便以后查询,由于是个人总结,如有不对,欢迎指正:另外,内容大部分来自网络.书籍.和各类手册,如若侵权请告知,马上删帖致歉. QQ 群 号:513683159 [相 ...
- linux大端小端命令,linux的大小端、网络字节序问题
linux的大小端.网络字节序问题 总结:1.80X86使用小端法,网络字节序使用大端法. 2.二进制的网络编程中,传送数据,最好以unsigned char, unsigned short, uns ...
- 字节序 主机字节序与网络字节序互相转换
目录 1.什么是字节序? 2.字节序分类 3.为什么要有大端字节序和小端字节序? 4.主机字节序和网络字节序 5.主机字节序与网络字节序的转换 6.怎么判断自己的主机是小端字节序还是大端字节序呢? 7 ...
- 主机字节序和网络字节序
1.大端字节序和小端字节序: 大端字节序存储时值的高位存储在较小的地址,值的低位存储在较大的地址. 小端字节序存储时值的高位存储在较大的地址,值的低位存储在较小的地址. 以0x12345678为例: ...
- 本地字节序和网络字节序
本地字节序和网络字节序 字节序指不同的CPU访问内存中多字节数据的时候,存在大小端的问题,并且一定是访问多字节数据的时候才会存在大小端的问题,如果CPU访问的是字符串,则不存在大小端的问题: 那么如何 ...
- 本地字节序与网络字节序的相互转换(IP地址、端口号)
一般数据在内存中是按照字节存储的,存储的方式分为大端和小端.在不知道对方主机的存储方式的情况下,我们不知道是否需要转换数据的存储方式.因此,TCP/IP协议规定:发送到网络的数据流应采用大端字节序! ...
最新文章
- TSC打印机编程C#
- 前端领域的BEM到底是什么
- Linux原始套接字实现分析---转
- 前沿分享|阿里云数据库解决方案架构师 王宏宇:云原生数据仓库AnalyticDB在零售行业的深度应用和业务价值
- wsl2启动桌面_WSL2使用xrdp实现图形桌面
- 线程通信之多个线程循环执行,(A线程执行5次,B线程执行10次,C线程执行15次)...
- 设计类时需要注意的6个地方
- 解决警告“ld: warning: directory not found for option”
- 学习总结 java Iterator迭代器练习
- oracle top 5 timed events,oracle gcr sleep in the Top Timed Events in report
- 关于新APP,从交底书入手
- 方维众筹1.61 php5.5,最新方维众筹1.61完美解密版源码 综合型众筹产品+理财+公益+股权+微信+商城+PC+WAP运营版...
- 金蝶数据库(质疑)解决方法
- 为什么有机棉这么贵,还深受欢迎?
- 乐安全 支持x86_不用苦等五一 四款近期主打平板推荐
- 中国宠物协会会员查询介绍
- 【单片机学习笔记】(6):字符串处理函数、变量的三种情况、用函数实现模块化程序设计、晶振与延时、指针
- ROOT/RStringView.hxx:32:37: error: ‘experimental’ in namespace ‘std’ does not name a type
- 2021恒生电子面经(校招实习)
- python 在屏幕上点击特定按钮或图像