Получить доменное имя с IP - PullRequest
1 голос
/ 15 февраля 2011

Как я могу получить доменное имя с IP-адреса.Является ли это возможным?Какие функции мне нужно использовать?

enter code herestruct sockaddr_in saGNI;
char hostname[NI_MAXHOST];
char servInfo[NI_MAXSERV];
u_short port = 443;

saGNI.sin_family = AF_INET;
saGNI.sin_addr.s_addr = inet_addr("74.125.87.9");
saGNI.sin_port = htons(443);

// Call getnameinfo
int ok = getnameinfo((struct sockaddr *) &saGNI,
             sizeof (struct sockaddr),
             hostname,
             NI_MAXHOST, servInfo, NI_MAXSERV, 0);

return hostname;

ok = 0, hostname = 74.125.87.9

Я действительно не знаю.

Ответы [ 3 ]

0 голосов
/ 15 февраля 2011

Я не думаю, что это возможно, потому что несколько доменов / поддоменов могут указывать на один и тот же IP-адрес.

Например, на моем сайте у меня есть выделенный IP, однако я использую один и тот же сервер с этим IP для размещения нескольких веб-сайтов, а также поддоменов, поэтому, если вы попытаетесь получить доменное имя, как он узнает какой домен вернуть?

Пожалуйста, поправьте меня, если я ошибаюсь.

0 голосов
/ 15 февраля 2011

Вы можете использовать следующую ссылку - некоторая полезная информация внутри. Они используют

int getnameinfo(const struct sockaddr *restrict sa, socklen_t salen,
       char *restrict node, socklen_t nodelen, char *restrict service,
       socklen_t servicelen, int flags);
0 голосов
/ 15 февраля 2011

Вы можете использовать GetHostByAddr () (что устарело) или более новую GetNameInfo () . Они работают как с IPv4, так и с IPv6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...