gethostbyaddr()

返回對應於給定地址的主機信息。

#include <sys/socket.h>

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

addr:指向網路位元組順序地址的指針

len: 地址的長度,在AF_INET類型地址中為4。

type:地址類型,應為AF_INET。

基本介紹

  • 中文名:gethostbyaddr()
  • 性質:返回對應於給定地址的主機信息
  • addr:指向網路位元組順序地址的指針
  • 成員:正規的主機名字
C語言函式,注釋,結構成員,返回值,用法,PHP函式,函式功能,語法與返值,舉例,

C語言函式

注釋

gethostbyaddr()返回對應於給定地址的包含主機名字和地址信息的hostent結構指針。結構的聲明如下:
struct hostent {
char * h_name;
char * * h_aliases;
short h_addrtype;
short h_length;
char * * 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()取消了.

用法

HOSTENT *lpHostEnt;
in_addr ina;
ina.S_un.S_addr = inet_addr("127.0.0.1"); //獲取本地主機信息
lpHostEnt = gethostbyaddr((char*)&ina.S_un.S_addr, 4, AF_INET);
MessageBox(lpHostEnt->h_name); //顯示一下主機名稱

PHP函式

函式功能

(PHP 3, PHP 4 )
gethostbyaddr -- Get the Internet host name corresponding to a given IP address

語法與返值

string gethostbyaddr ( string ip_address)
Returns the host name of the Internet host specified byip_addressor a string containing the unmodifiedip_addresson failure.

舉例

例子 1. A simplegethostbyaddr()example
<?php
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
echo $hostname;
?>
由於PHP是用C寫的腳本語言,借鑑了很多C語言的特性和函式,因此有很多相似之處。但是C語言更底層,更高效。

相關詞條

熱門詞條

聯絡我們