Objective C中如何从域名中获取IP地址和IP地址的域名?

Sag*_*ari 3 iphone dns network-programming objective-c ip-address

我可以通过使用此问题的答案来获取我正在使用的设备/机器的当前 IP 地址。

我已经经历过这个问题了。Java允许从域名获取IP地址。在 Objective C 中可能吗?如何?

第二个问题是如何使用设备/机器的 IP 地址获取设备/机器的名称。举例来说,我有一个 IP 地址 192.168.0.74 = 设备名称是什么?在目标 C 中?

dre*_*lax 5

我不确定这是否是最好的方法,但它大多数情况下对我有用。我输入 StackOverflow 的 IP 地址 (69.59.196.211),它返回了stackoverflow.com,但我输入了 Google 的一个 IP 地址 (210.55.180.158),它返回了我cache.googlevideo.com(所有结果,不仅仅是第一个结果)。

int error;
struct addrinfo *results = NULL;

error = getaddrinfo("69.59.196.211", NULL, NULL, &results);
if (error != 0)
{
    NSLog (@"Could not get any info for the address");
    return; // or exit(1);
}

for (struct addrinfo *r = results; r; r = r->ai_next)
{
    char hostname[NI_MAXHOST] = {0};
    error = getnameinfo(r->ai_addr, r->ai_addrlen, hostname, sizeof hostname, NULL, 0 , 0);
    if (error != 0)
    {
        continue; // try next one
    }
    else
    {
        NSLog (@"Found hostname: %s", hostname);
        break;
    }
}

freeaddrinfo(results);
Run Code Online (Sandbox Code Playgroud)

该地址可以有多个名称,因此您可能不想在找到的第一个名称处停止。