Linux網路程式設計基礎API-socket地址API-1.1
阿新 • • 發佈:2022-04-02
一、主機位元組序和網路位元組序
1、位元組序分為大端位元組序(big endian)和小端位元組序(littl endian):
1)大端位元組序:一個整數的高位位元組(23~31bit)儲存在記憶體的低地址處,低位位元組(0~7bit)儲存在記憶體的高地址處;
2)小端位元組序:一個整數的低位位元組儲存在記憶體的低地址處,高位位元組儲存在記憶體的高地址處。
2、現代PC大多采用小端位元組序,小端位元組序也稱為主機位元組序;
因為傳送端和接收端使用的標準可能不同,所以需要傳送端先轉換為大端位元組序然後傳送,大端位元組序也成為網路位元組序。
即使是同一機器上的兩個程序(如c和java編寫的程式),也要考慮位元組序的問題。
3、Linux提供的主機位元組序和網路位元組序之間的轉換:
1 #include <netinet/in.h> 2 unsigned long int htonl( unsigned long int hostlong); 3 unsigned short int htons( unsigned short int hostshort ); 4 unsigned long int ntohl( unsigned long int netlong); 5 unsigned short int ntohs( unsigned short int netshort );netinet/in.h
htonl表示“host to network long”,其他同理;長整型(long)通常是IP,短整型(short)通常是埠號。
二、通用socket地址