1
#include <stdio.h>
#include <netdb.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main () {
    in_addr ip;
    ip.s_addr = inet_addr("173.194.71.94"); // www.google.fr IP
    hostent* hostnames = gethostbyaddr(&ip, sizeof(ip), AF_INET);
    if (hostnames != NULL && hostnames[0].h_name != NULL) {
        printf("%s\n", hostnames[0].h_name);
        return 0;
    } else {
        herror("gethostbyaddr");
        return 1;
    }
}

它返回“gethostbyaddr:未知主机”。我尝试使用不同的 IP。怎么了 ?

任何人都可以帮助我吗?谢谢

4

1 回答 1

0

您的代码无法为我编译。我在in_addr和上出现错误hostent。但是,如果我将它们的声明分别更改为struct in_addrstruct hostent,它会在没有警告的情况下编译并在运行时发出以下输出:

lb-in-f94.1e100.net

这似乎是正确的。

如果它为您按原样编译,那么您可能使用的是不同的操作系统。我尝试了 MacOS 和 Linux,结果相同。

于 2012-09-08T17:50:43.483 回答