使用這個東西,首先要包含2個頭檔案
這個函式的傳入值是網域名稱或者主機名,例如"www.google.com","wpc"等等。
傳出值,是乙個hostent的結構(如下)。如果函式呼叫失敗,將返回null。
解釋一下這個結構, 其中:
char *h_name 表示的是主機的規範名。例如www.google.com的規範名其實是www.l.google.com。
char **h_aliases 表示的是主機的別名。www.google.com就是google他自己的別名。有的時候,有的主機可能有好幾個別名,這些,其實都是為了易於使用者記憶而為自己的**多取的名字。
int h_addrtype 表示的是主機ip位址的型別,到底是ipv4(af_inet),還是ipv6(af_inet6)
int h_length 表示的是主機ip位址的長度
int **h_addr_lisst 表示的是主機的ip位址,注意,這個是以網路位元組序儲存的。千萬不要直接用printf帶%s引數來打這個東西,會有問題的哇。所以到真正需要列印出這個ip的話,需要呼叫inet_ntop()。
這個函式,是將型別為af的網路位址結構src,轉換成主機序的字串形式,存放在長度為cnt的字串中。
如果成功,返回指向dst的乙個指標。
如果失敗,返回值是null。
下面是例程,有詳細的注釋。
gethostbyname 函式說明
gethostbyname 函式說明 用網域名稱或主機名獲取ip位址 包含標頭檔案 include include 函式原型 struct hostent gethostbyname const char name 這個函式的傳入值是網域名稱或者主機名,例如 www.google.cn 等等。傳出值...
linux下gethostbyname工作原理
既然這兩個函式能夠轉換 ip 和網域名稱,那麼,它們就會去訪問dns伺服器嗎?如果真的要去訪問,網路不通的情況下,它們又怎麼辦呢?帶著這些疑問,我在網上查了一下,並根據提示,做了一下試驗,簡單總結了一下 gethostbyname 網域名稱 ip gethostbyaddr ip 網域名稱 在解析的...
gethostbyname失敗要配置dns
gethostbyname 返回對應於給定主機名的包含主機名字和位址資訊的hostent結構指標。結構的宣告與gethostaddr 中一致。返回對應於給定主機名的主機資訊 struct hostent gethostbyname const char name 這個函式的傳入值是網域名稱或者主機名...