Linux 之網路程式設計 位址轉換

2021-08-26 09:45:10 字數 1552 閱讀 9332

1、ipv4位址轉換函式

/*將點分十進位制ip位址轉換為32位網路位元組順序的ip位址*/

int inet_addr(const char* cp);

/*將點分十進位制ip位址轉換為32位主機位元組順序的ip位址*/

int inet_network(const char* cp);

/*將點分十進位制的字串轉換為32位網路位元組順序的ip位址*/

char* inet_aton(const char* cp,struct in_addr in);

/*將32位網路位元組順序的ip位址轉換為點分十進位制的字串*/

char* inet_ntoa(struct in_addr in);

2、位址型別轉換

/*將存在在cp位置,位址型別為af的點分十進位制位址轉換到buf中,若af為ipv4,則buf應為struct in_addr,若af為ipv6,則buf應為struct in6_addr*/

int inet_pton(int af,const char* cp,void* buf);

/*將儲存在位置cp,位址協議為af的網路位元組序的32位ip位址轉換為點分十進位制,並儲存在長度為len的buf中,若af為ipv4,則cp應為struct in_addr型別,若af為ipv6,則cp應為struct in6_addr型別*/

char* inet_ntop(int af,void* cp,char* buf,socketlen_t len);

3、通過ip位址獲取網路號和主機號(ipv4)

/*從ip位址in(32位網路位元組序)中提取標準主機號*/

int inet_lnaof(struct in_addr in);

/*從ip位址in(32位網路位元組序)中提取標準網路號*/

int inet_netof(struct in_addr in);

/*將網路號(網路位元組序)和主機號(網路位元組序)組合成乙個標準ip位址(網路位元組序)*/

struct in_addr inet_makeaddr(int net,int host);

4、位元組順序轉換函式

/*長位元組位元組順序轉換函式*/

unsigned long int ntohl(unsigned long int net);

unsigned long int htonl(unsigned long int host);

/*短位元組位元組順序轉換函式*/

linux網路程式設計 網路位元組序 位址轉換

endian 這個詞出自 格列佛遊記 小人國的內戰就源於吃雞蛋時是究竟從大頭 big endian 敲開還是從小頭 little endian 敲開,由此曾發生過六次叛亂,其中乙個皇帝送了命,另乙個丟了王位。我們一般將 endian 翻譯成 位元組序 將 big endian 和 little en...

網路程式設計中位址格式轉換(linux下)

一 位址格式轉換 1 第乙個函式 include include include int inet pton int af const char src void dst 2 返回值 成功返回1,錯誤返回 1 3 引數 af 轉換格式 af inet ipv4 或者af inet6 ipv6 2 第...

Linux網路程式設計 位元組序 位址轉換函式

1 談到位元組序,那麼會有朋友問什麼是位元組序 很簡單 例如乙個16位的整數,由2個位元組組成,8位為一位元組,有的系統會將高位元組放在記憶體低的位址上,有的則將低位元組放在記憶體高的位址上,所以存在位元組序的問題。2 那麼什麼是高位元組 低位元組?也相當簡單 乙個16進製制整數有兩個位元組組成,例...