gpt4 book ai didi

c - getnameinfo() 是否可以用于返回单个 IP 地址的多个主机名

转载 作者:行者123 更新时间:2023-12-03 11:51:06 26 4
gpt4 key购买 nike

我有一个 IP 地址 5.5.5.5 并且有两个主机名指向它。

从命令行

host 5.5.5.5



DNS.in-addr.arpa 域名指针地址1.test.com。

DNS.in-addr.arpa 域名指针地址2.test.com。

nslookup 5.5.5.5



服务器:dns.test.com

地址:dns.test.com

非权威回答:

DNS.in-addr.arpa 名称 = address1.test.com。

DNS.in-addr.arpa 名称 = address2.test.com。

我正在尝试在 c/c++ 中实现这种类型的功能。当我使用 getnameinfo() 时,它只返回 address1.test.com 或 address2.test.com。

我的问题是在一次调用中获得这两个 DNS 名称吗?
nslookup 和主机如何做到这一点?

代码 :
    char host[1024];
std::string inputAddress = "5.5.5.5";
struct sockaddr_in socketAddress;
socketAddress.sin_family = AF_INET;
inet_pton(AF_INET, inputAddress.c_str(), &(socketAddress.sin_addr));
getnameinfo((struct sockaddr *)&socketAddress, sizeof(socketAddress), host, 1024, NULL, NULL, 0);
printf("host=%s \n", host);

最佳答案

没有。getnameinfo()接口(interface)只能返回一个名称——它无法返回多个结果。返回多个 PTR 记录时,其行为未定义;在实践中,大多数实现可能会使用他们看到的第一个。

请记住 there should only be one PTR record (and, thus, one canonical hostname) for any given IP .虽然可以将多个 A/AAAA 名称解析为单个 IP,但这些名称中只有一个应该出现在 PTR 记录中。

关于c - getnameinfo() 是否可以用于返回单个 IP 地址的多个主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com