【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。