gethostbyaddr()
簡述:
返回對應於給定地址的主機信息。
#include <winsock.h>
struct hostent FAR *PASCAL FAR gethostbyaddr(const char
FAR * addr, int len, int type);
addr:指向網絡字節順序地址的指針。
len: 地址的長度,在PF_INET類型地址中爲4。
type:地址類型,應爲PF_INET。
註釋:
gethostbyaddr()返回對應於給定地址的包含主機名字和地址信息的hostent結構指針。結構的聲明如下:
struct hostent {
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
};
結構的成員有:
成員 用途
h_name 正規的主機名字(PC)。
h_aliases 一個以空指針結尾的可選主機名隊列。
h_addrtype 返回地址的類型,對於Windows Sockets,這個域總是PF_INET。
h_legnth 每個地址的長度(字節數),對應於PF_INET這個域應該爲4。
h_addr_list 應該以空指針結尾的主機地址的列表,返回的地址是以網絡順序排列的
爲了保證其他舊的軟件的兼容性,h_addr_list[0]被定義爲宏h_addr。
返回的指針指向一個由Windows Sockets實現分配的結構。應用程序不應該試圖修改這個結構或者釋放它的任何部分。此外,每一線程僅有一份這個結構的拷貝,所以應用程序應該在發出其他Windows Scokets API調用前,把自己所需的信息拷貝下來。
返回值:
如果沒有錯誤發生,gethostbyaddr()返回如上所述的一個指向hostent結構的指針,否則,返回一個空指針。應用程序可以通過WSAGetLastError()來得到一個特定的錯誤代碼。
錯誤代碼:
WSANOTINTIALISED 在應用這個API前,必須成功地調用WSAStartup()。
WSAENTDOWN Windows Sockets實現檢測到了網絡子系統的錯誤。
WSAHOST_NOT_FOUND 沒有找到授權應答主機。
WSATRY_AGAIN 沒有找到非授權主機,或者SERVERFAIL。
WSANO_RECOVERY 無法恢復的錯誤,FORMERR,REFUSED,NOTIMP。
WSANO_DATA 有效的名字,但沒有關於請求類型的數據記錄。
WSAEINPROGRESS 一個阻塞的Windows Sockets操作正在進行。
WSAEINTR 阻塞調用被WSACancelBlockingCall()取消了.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.