Я не уверен, что это лучший способ сделать это, но в основном это работает для меня. Я вставил IP-адреса StackOverflow (69.59.196.211), и он вернул мне stackoverflow.com
, но я ввел один из IP-адресов Google (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);
Для адреса может быть несколько имен, поэтому вы не захотите останавливаться на первом найденном адресе.