* Structures returned by network data base library. All addresses are
* supplied in host order, and returned in network order (suitable for
* use in system calls)
網絡數據庫返回的結構。所有地址都是
按主機順序提供,並以網絡順序返回(適用於
在系統調用中使用)。
struct hostent {
char *h_name; /* official name of host */主機的規範名
char **h_aliases; /* alias list */主機的別名
int h_addrtype; /* host address type */主機ip地址的類型
int h_length; /* length of address */主機ip地址的長度
char **h_addr_list; /* list of addresses from name server */主機的ip地址,這個是以網絡字節序存儲的。一定不要直接用printf帶%s參數來打這個東西,會有問題。所以到真正需要打印出這個IP的話,需要調用inet_ntop()
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define h_addr h_addr_list[0] /* address, for backward compatibility */
#endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
};
DNS中的條目稱爲資源記錄RR,有如下幾類RR
A 將主機名映射成32位ipv4地址。A(代表32位)
AAAA 將主機名映射成128位ipv6地址。AAAA(4*32=128位)
PTR 將IP地址映射成主機地址,ipv4和ipv6的規則是不一樣的
MX 指定一主機作爲某主機的郵件交換器,如果有多個,先使用數字小的那個MX
CNAME CNAME指別名記錄也被稱爲規範名字。這種記錄允許您將多個名字映射到同一臺計算機。 通常用於同時提供WWW和MAIL服務的計算機。這段時間遇到通過域名獲取IP gethostbyname2方法崩潰好幾次。
。。。解決中,持續更新