【Linux网络编程】字节序
字节序
字节序就是字节在内存中存储的顺序,如32位整数0x01234567,在内存中存储时,有如下两种顺序:
大端序将数值的高位存储在低位地址中,小端序则相反。
网络字节序
网络中传输数据均采用大端序。
Linux字节序转换函数
在 #include <netinet/in.h>
中提供了 4 个函数:
unsigned long int htonl(unsigned long int hostlong); // 主机ip->网络ip
unsigned short int htons(unsigned short int hostshort); // 主机port->网络port
unsigned long int ntohl(unsigned long int netlong); // 网络ip->主机ip
unsigned short int ntohs(unsigned long int netshort); // 网络port->主机port
其含义很明确,如 "htol" 表示 "host to network long"。一般长整型函数用于转换 ip 地址,短整型函数用来转换 port。