getnameinfo() 可以用于 return 单个 IP 地址的多个主机名
getnameinfo() can it be used to return multiple hostnames for a single IP address
我有一个 IP 地址 5.5.5.5 并且有两个主机名指向它。
从命令行
host 5.5.5.5
DNS.in-addr.arpa域名指针address1.test.com.
DNS.in-addr.arpa域名指针address2.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() 时,它仅 returns 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()
接口只能 return 一个名称——它无法 return 多个结果。当多个 PTR 记录被 returned 时,它的行为是未定义的;实际上,大多数实现可能会使用他们看到的第一个。
记住there should only be one PTR record (and, thus, one canonical hostname) for any given IP。虽然可以将多个 A/AAAA 名称解析为一个 IP,但 PTR 记录中只应出现其中一个名称。
我有一个 IP 地址 5.5.5.5 并且有两个主机名指向它。
从命令行
host 5.5.5.5
DNS.in-addr.arpa域名指针address1.test.com.
DNS.in-addr.arpa域名指针address2.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() 时,它仅 returns 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()
接口只能 return 一个名称——它无法 return 多个结果。当多个 PTR 记录被 returned 时,它的行为是未定义的;实际上,大多数实现可能会使用他们看到的第一个。
记住there should only be one PTR record (and, thus, one canonical hostname) for any given IP。虽然可以将多个 A/AAAA 名称解析为一个 IP,但 PTR 记录中只应出现其中一个名称。