getnameinfo()可用于返回单个IP地址的多个主机名

时间:2015-12-18 18:46:29

标签: c sockets dns network-programming hostname

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

从命令行

  

主持人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 name = address1.test.com。

DNS.in-addr.arpa name = address2.test.com。

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

我的问题是在一次通话中获取这两个DNS名称? nslookup和host如何做到这一点?

代码:

&mut Command

1 个答案:

答案 0 :(得分:4)

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

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