主機名解析成IP位址

2021-06-18 02:34:20 字數 1572 閱讀 8543

struct hostent *h = gethostbyname(argv[2]);    

hostaddr = ((struct in_addr *)h->h_addr_list[0])->s_addr;

argv[2]:是對應的主機名,如:srwp05mgt001

gethostbyname()返回對應於給定主機名的包含主機名字和位址資訊的hostent結構指標。結構的宣告與gethostaddr()中一致。

返回的指標指向乙個由windows sockets實現分配的結構。應用程式不應該試圖修改這個結構或者釋放它的任何部分。此外,所有執行緒共用乙份這個結構的拷貝,所以應用程式應該在發出其他windows scokets api呼叫前,把自己所需的資訊拷貝下來。

gethostbyname()實現沒有必要識別傳送給它的ip位址串。對於這樣的請求,應該把ip位址串當作乙個未知主機名同樣處理。如果應用程式有ip位址串需要處理,它應該使用inet_addr()函式把位址串轉換為ip位址,然後呼叫gethostbyaddr()來得到hostent結構。

返回對應於給定主機名的主機資訊。

#include

struct hostent far *pascal far gethostbyname(const char

far * name);

name:指向主機名的指標。

返回型別

struct hostent

;linux版

#include

struct hostent *gethostbyname(const char * hostname);

返回:非空指標——成功,空指標——出錯,同時設定h_errno

返回值如果沒有錯誤發生,gethostbyname()返回如上所述的乙個指向hostent結構的指標,否則,返回乙個空指標。應用程式可以通過wsagetlasterror()來得到乙個特定的錯誤**。

錯誤**

wsanotinitialised 在應用這個api前,必須成功地呼叫wsastartup()。

wsaentdown windows sockets實現檢測到了網路子系統的錯誤。

wsahost_not_found 沒有找到授權應答主機。

wsatry_again 沒有找到非授權主機,或者serve***il。

wsano_recovery 無法恢復的錯誤,formerr,refused,notimp。

wsano_data 有效的名字,但沒有關於請求型別的資料記錄。

wsaeinprogress 乙個阻塞的windows sockets操作正在進行。

wsaeintr 阻塞呼叫被wsacancelblockingcall()取消了.

需要注意的是gethostbyname()函式屬於winsock api庫,而在使用winsock api之前,必須呼叫wsa-startup函式,只有該函式成功返回(表示應用程式與winsock庫成功地建立起連線),應用程式才可以呼叫其他windows sockets dll中的函式。當程式將要結束時,又必須呼叫wsacleanup 函式進行清理工作,以便釋放其占用的資源。wsacleanup 函式用來結束windows sockets dll的使用。

mysql 主機名和IP位址解析詳解

現象 程式連線mysql時,mysql的error.log裡面提示 warning ip address 10.0.0.220 could not be resolved name or service not known 原因 mysql資料庫伺服器沒有配置 etc hosts,也沒有dns服務,...

獲取主機名與主機IP位址

說明 structhostent define h addr h addr list 0 h name 位址的正式名稱。h aliases 空位元組 位址的預備名稱的 指標。h addrtype 位址型別 通常是 af inet。h length 位址的位元長度。h addr list 零位元組 主...

配置主機名 IP位址 主機對映

1.su 切換到root使用者 修改主機名 hostname 檢視主機名 修改方式 兩種方式 a.hostname 臨時修改 b.vi etc sysconfig network 永久修改 必須重啟才能生效 2.設定ip位址 b.右上角網路連線圖示 右鍵 edit connections 選中 sy...