在Windows和
Linux网络编程时需要用到的,用来将主机字节顺序转化为网络字节顺序,以Windows下的代码为例:
而我们常用的
x86 CPU (
intel,
AMD) 电脑是 little-endian,也就是整数的低位字节放在内存的低字节处。举个例子吧。假定你的数据是0x1234,
htons 的用处就是把实际主机内存中的整数存放方式调整成网络
字节顺序。
解释一下,数字16的
16进制表示为0x0010,数字4096的16进制表示为0x1000。 由于Intel机器是小尾端,存储数字16时实际顺序为1000,存储4096时实际顺序为0010。因此在发送网络包时为了报文
中数据为0010,需要经过htons进行字节转换。如果用
IBM等大尾机器,则没有这种字节顺序转换,但为了程序的
可移植性,也最好用这个函数。