关于socket 绑定过程中对地址初始化使用的htonl函数的一些理解(转载)
来源:互联网 发布:tsp问题蚁群算法总结 编辑:程序博客网 时间:2024/06/05 05:10
htonl就是把本机字节顺序转化为网络字节顺序
h---host 本地主机
to 就是to 了
n ---net 网络的意思
l 是 unsigned long
所谓网络字节顺序(大尾顺序)就是指一个数在内存中存储的时候“高对低,低对高”(即一个数的高位字节存放于低地址单元,低位字节存放在高地址单元中)。但是计算机的内存存储数据时有可能是大尾顺序或者小尾顺序。
先举个例子:int a = 0x403214;
int b = htonl(a);
我在VC++6.0调试这段代码,发现
&a的值为:0x0012ff44
其中0x0012ff44、0x0012ff45、0x0012ff46、0x0012ff47这四个单元的值依次为:14、32、40、00,即0x403214这个数的高位部分存放在高位地址中,低位部分存放在低位地址中,即小尾顺序。
&b的值为:0x0012ff40
其中0x0012ff40、0x0012ff41、0x0012ff42、0x0012ff43这四个单元的值依次为:00、40、32、14,即把原数0x403214的高位部分存放在低位地址中,低位部分存放在高位地址中。
由此可见,如果一个数以小尾顺序存储,经htonl函数调用后这个数的高地位字节会完全颠倒过来成为一个新的数。这个新的数在机器内部其实还是以小尾顺序存储的,但是相对于原来的数而言相当于是变成大尾顺序的了。
long型的0x40写完整为:0x 00 00 00 40,共四个字节,调用htonl后四个字节颠倒顺序,为0x 40 00 00 00。
同样,0x40 00 00 00调用htonl后变为0x 00 00 00 40,即0x40
阅读全文
0 0
- 关于socket 绑定过程中对地址初始化使用的htonl函数的一些理解(转载)
- 对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】
- 对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】 .
- 对Socket CAN的理解(5)——【Socket CAN控制器的初始化过程】
- 对初始化函数OSInit()的理解
- 关于对socket的理解
- 对Socket函数的理解
- 对js事件绑定的一些理解
- socket编程中关于收发过程的一些特点
- 关于C语言中对数组取地址的理解
- 关于信号函数处理过程中对信号的屏蔽理解。
- 对数组首地址的一些理解
- 对php中函数使用的理解
- Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)
- 小白分享自己在网上看到对ArrayList方法使用的一些理解(转载)
- 关于socket的一些个人理解
- 关于inline hook中函数地址计算的理解
- 对java中equals和hashCode函数的一些理解
- 运营CMS后台&报表系统合作字段添加
- 使用python监控HDFS文件的增量【优化中】
- 百度webUploader上传jpg文件出错
- 基于ajax的三层,实现数据库的增删改查(三 BLL层编写)
- 面试题:三级指针问题
- 关于socket 绑定过程中对地址初始化使用的htonl函数的一些理解(转载)
- Java实现Excel导入数据库,数据库中的数据导入到Excel。。转载 自学资料总结 实现的功能: Java实现Excel导入数据库,如果存在就更新 数据库中的数据导入到Excel 1、
- 二十三种设计模式之工厂模式
- 程序员什么时候该考虑辞职
- TF-day6 CNN简单分类
- hadoop启动datanode失败
- English words page four
- 关于Calendar中Maximum的成员函数
- OpenCV学习之Log-Polar极坐标变换