我有问题。
我想将IP地址(81.2.195.254)转换为主机名(www.farnost-hranice.cz)。
在这里您可以尝试转换此IP地址以查看是否正确:
https://whatismyipaddress.com/hostname-ip
我的问题是,当我尝试将IP地址转换为主机名时,它给了我奇怪的(甚至是不可访问的)主机名:
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;
}

最佳答案

符合预期,IP地址81.2.195.254的反向主机名(也称为PTR记录)确实为254.195.forpsi.net

您可以这样检查自己,例如使用程序“ 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,但是相反没有链接。

关于c - getnameinfo()给我奇怪的主机名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58488960/

10-11 18:59