2013-08-20 27 views
1

如何從iOS上的給定主機名獲取IP?如何從iOS上的主機名獲取IP

我試過谷歌,但什麼也沒找到。

+0

不,我想要一個主機名的IP。 FX。我向應用程序提供主機名稱Google.com,並返回該IP。 – Hedam

+0

難道你不能ping通主機名並捕獲響應IP? – Luke

+0

好吧然後[這一個](http://stackoverflow.com/questions/9567521/obtaining-a-server-ip-address-from-hostname) – 2013-08-20 20:47:56

回答

7

以下代碼適用於IPv4和IPv6。它使用getaddrinfo()至 檢索主機的IP地址列表,並且getnameinfo()將每個IP地址轉換爲 爲一個字符串。 (爲簡潔起見省略了錯誤檢查。)

struct addrinfo hints; 
memset(&hints, 0, sizeof(hints)); 
hints.ai_family = PF_UNSPEC;  // PF_INET if you want only IPv4 addresses 
hints.ai_protocol = IPPROTO_TCP; 

struct addrinfo *addrs, *addr; 

getaddrinfo("www.google.com", NULL, &hints, &addrs); 
for (addr = addrs; addr; addr = addr->ai_next) { 

    char host[NI_MAXHOST]; 
    getnameinfo(addr->ai_addr, addr->ai_addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST); 
    printf("%s\n", host); 

} 
freeaddrinfo(addrs); 
+0

得到此錯誤:'struct addrinfo'的定義必須在需要之前從模塊'Darwin.POSIX.netdb'導入 – Hedam

+4

@RoboForm:您必須添加一些包含文件。如果你在命令行輸入「man getaddrinfo」,你會看到需要包含什麼文件。 –