1. 程式人生 > >linux 中IP點分十進位制與數值之間轉換函式

linux 中IP點分十進位制與數值之間轉換函式

#include <arpa/inet.h>

int inet_pton(int family,const char * strptr,void * addrptr);
     返回:1--成功, 0--輸入不是有效的表達格式 , -1--出錯
//將點分十進位制的ip地址轉化為用於網路傳輸的數值格式
const char * inet_ntop(int family,const void * addrptr,char * strptr,size_t len);
其中len =sizeof(* strptr)
     返回: 指向結果的指標--成功 , NULL--出錯 //將數值格式轉化為點分十進位制的ip
1)這兩個函式的family引數既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6)。如果,以不被支援的地址族作為family引數,這兩個函式都返回一個錯誤,並將errno置為EAFNOSUPPORT.

(2)第一個函式嘗試轉換由strptr指標所指向的字串,並通過addrptr指標存放二進位制結果,若成功則返回值為1,否則如果所指定的family而言輸入字串不是有效的表示式格式,那麼返回值為0.

(3)inet_ntop進行相反的轉換,從數值格式(addrptr)轉換到表示式(strptr)。inet_ntop函式的strptr引數不可以是一個空指標。呼叫者必須為目標儲存單元分配記憶體並指定其大小,呼叫成功時,這個指標就是該函式的返回值。len引數是目標儲存單元的大小,以免該函式溢位其呼叫者的緩衝區。如果len太小,不足以容納表示式結果,那麼返回一個空指標,並置為errno為ENOSPC。