1. 程式人生 > 其它 >Linux網路程式設計基礎API-socket地址API-1.1

Linux網路程式設計基礎API-socket地址API-1.1

一、主機位元組序和網路位元組序

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地址