SOCKET 网络字节序与主机字节序及其相互转换

转载 2013年12月02日 13:04:44

主机字节序:整数在内存中保存的顺序

 

两种方式:

Little endian 将低序字节存储在起始地址

Big endian    将高序字节存储在起始地址

 

网络字节序:整数在网络中的发送顺序

标准规定

Big endian   首先发送高位字节

字节序转换函数

htonl: 转换long类型到网络字节序

htons: 转换short类型到网络字节序

ntohl: 转换网络字节序到long类型

ntohs: 转换网络字节序到short类型

inet_addr: 将字符串格式IP转换到网络字节序

inet_ntoa: 将网络字节序格式IP转换到字符串

举例:SOCKADDR_IN中的数据格式

SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(5120);
addr.sin_family = AF_INET;

该结构体中的成员sin_addr, sin_port使用的是网络字节序

sin_addr:

inet_addr()返回的已经是网络字节序

127.0.0.1 --> 0x7F.00.00.01

-> 01 低位

    00

    00

    7F 高位

sin_port:

5120(0x1400)在内存中的布局是

    00 低位

    14 高位

经过htons处理后

    14 低位

    00 高位

个人理解:重要的是标准

其实这个转换要解决的问题是网络上各个主机中数据类型的兼容问题。

假设有两个主机A和B,A主机采用了LE字节序,B主机采用了BE字节序,

那么整数0x12345678在A主机中的表示是

    低位--------->高位

0x 78    56    34    12

如果不进行字节序变换A将这个数发给B主机时,B主机收到后在的数保存了内存布局,

将这个数解释为 0x78563412 就会出现错误


来源:http://blog.csdn.net/icedmilk/article/details/5336296

相关文章推荐

网络字节序和主机字节序相互转换函数

#include unit16_t htons(uint16_t host16bitvalue); uint32_t htonl(uint32_t host32bitvalue); //均返回网络...

WinSock网络编程学习(三)判断主机字节序程序

什么是“字节序”? 在计算机网络中,通信是基于信息流的,不管是有线通信还是无线通信,那么数据在通道上传输时,就需要考虑一个问题:数据在传输时,正确的字节顺序是怎样的?收到的时候又该以怎样的顺序去解读...

网络字节序和主机字节序

  • 2011年03月30日 20:31
  • 27KB
  • 下载

主机字节序与网络字节序的转换过程

主机字节序与网络字节序的转换过程
  • an_tang
  • an_tang
  • 2017年05月29日 17:13
  • 871

网络字节序与主机字节序的转换~!~~~

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...

网络字节序与主机字节序的转换

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...

网络字节序 主机字节序 转换

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...

判断主机字节序大小端

  • 2013年09月04日 14:24
  • 198B
  • 下载

网络字节序与主机字节序的转换

在对IP地址结构体SOCKADDR_IN赋值的时候,经常会用到下列的函数htonl,htons,inet_addr,与之相对应的函数是ntohl,ntohs,inet_ntoa。查看这些函数的解析,会...

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

原文地址:http://blog.csdn.net/libuding/article/details/5860578 Part 1: htons函数具体解释      在Linux...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SOCKET 网络字节序与主机字节序及其相互转换
举报原因:
原因补充:

(最多只允许输入30个字)