Linux 網路程式設計之通過IP或者主機名獲取資訊

2021-07-03 07:37:39 字數 1510 閱讀 3849

struct hostent

#define h_addr h_addr_list[0] /* 主機的第乙個ip位址*/

struct hostent *gethostbyname(const char *name);

通過主機名 name 獲取 主機ip等資訊。成功返回給定主機名包含的主機名字和位址資訊的 hostent結構體指標。

示例如下:

#include #include #include int main(int argc, char *argv)

struct hostent *ht = gethostbyname(argv[1]);

if( ht )

for(i=0; ; ++i)

}return 0;

}

struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);

返回對應於給定位址的包含主機名字和位址資訊的hostent結構指標。

addr 指向網路位元組序位址的指標。

len 位址的長度。

type 位址型別。

示例如下:

#include #include #include #define addr_len 	4

#define addr_type af_inet

int main(int argc, char *argv)

struct in_addr *addr = (struct in_addr *)malloc(sizeof(struct in_addr));

if ( ! inet_aton(argv[1], addr))

struct hostent *ht = gethostbyaddr(addr, addr_len, addr_type);

if(ht)

for(i = 0; ; ++i)

}else }

return 0;

}

gethostbyname()和gethostbyaddr()函式功能返回的hostent的結構或null指標。

如果出現錯誤。h_errno的變數儲存的錯誤號。 

錯誤的可變h_errno的可以具有以下值: 

host_not_found 

指定的主機是未知的。 

no_address或no_data 

請求的名稱是有效的,但沒有乙個ip位址。 

no_recovery 

不可恢復的名稱伺服器發生錯誤。 

try_again 

乙個臨時錯誤發生在權威網域名稱伺服器。請稍後再試。

Android網路程式設計之通過Post傳遞引數

a 使用map來儲存引數 mapmap new hashmap map.put name onmoso map.put password onmoso.com b 使用defaulthttpclient建立httpclient例項 c 構建httppost d 將由map儲存的引數轉化為鍵值name...

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...