struct hostent *host = gethostbyname2([hostName UTF8String], AF_INET);

/*
 * 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方法崩潰好幾次。

。。。解決中,持續更新


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章