getnameinfo() дает мне странное имя хоста
У меня проблемы. Я хочу преобразовать IP-адрес (81.2.195.254) в имя хоста (www.farnost-hranice.cz).
Здесь вы можете попробовать преобразовать этот IP-адрес, чтобы убедиться в его правильности:
https://whatismyipaddress.com/hostname-ip
Моя проблема в том, что когда я пытаюсь преобразовать IP-адрес в имя хоста, это вызывает у меня странное (и даже недоступен) hostname:
254.195.forpsi.net
Что я делаю не так?
Мой код здесь:
#include <stdio.h> //scanf , printf
#include <string.h> //strtok
#include <stdlib.h> //realloc
#include <sys/socket.h> //socket
#include <netinet/in.h> //sockaddr_in
#include <arpa/inet.h> //getsockname
#include <netdb.h> //hostent
#include <unistd.h> //close
#include <getopt.h> //getopt
int main(void)
{
struct sockaddr_in sa; // could be IPv4 if you want
char host[1024];
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = inet_addr("81.2.195.254");
getnameinfo((struct sockaddr*)&sa, sizeof sa, host, sizeof host, NULL, 0, 0);
printf("hostname: %s", host);
return 0;
}
1 ответ
Как и ожидалось, обратное имя хоста (также известное как PTR-запись) для IP-адреса 81.2.195.254 действительно 254.195.forpsi.net
Вы можете сами это проверить вот так, например с помощью программы host:
$ host 81.2.195.254
254.195.2.81.in-addr.arpa указатель доменного имени 254.195.forpsi.net.
Это является правильным, что имя хоста www.farnost-hranice.cz указывает на IP - адрес 81.2.195.254 тоже, но нет никакой связи наоборот.