2012-02-27 80 views
1

我需要一个C++中的小程序,它将类型和主机名作为命令行参数,然后进行DNS查找。例如:如何在C++中进行DNS AAAA,CNAME和SRV查找?

DNSapp AAAA www.google.com 

会从www.google.com等返回IPv6地址。

我可以通过使用gethostbyname来做简单的查找,但我不知道如何执行其他查找。我试图谷歌他们,但没有成功。任何想法如何做到这一点?

+0

你在哪个平台上?在Windows/MacOS的/ BSD/Linux呢? – Ben 2012-02-27 11:21:16

+0

我在Linux上编程 – zaplec 2012-02-27 11:27:24

+0

getnameinfo存在于linux中用于RDNS查找。 getaddrinfo也存在,但似乎不支持SRV。 – Ben 2012-02-27 11:55:29

回答

4

gethostbyname已过时,请使用getaddrinfo查找A/AAAA查找。

对于SRV等我推荐ldns,或相关的libunbound。后者是图书馆的完整解决方案。

您也可以使用Linux标准库中的res_search

+0

当知道IP地址并想知道主机名时,是不是使用了gethostbyaddr? – zaplec 2012-02-27 14:12:17

+0

对不起,咖啡因太少 - 我的意思是'getaddrinfo'并纠正了我的答案 – Alnitak 2012-02-27 14:47:09

+0

ldns似乎符合我的需求。我会尝试一下,希望我能完成一些事情。 – zaplec 2012-02-27 15:44:08

1

在Windows上,GetAddrInfoW是gethostbyname的正确多值版本。

对于RDNS,getnameinfo是另一种方式。

GetAddrInfoEx可能会或可能不会使用SRV记录,我一直无法找到答案。