我需要一个C++中的小程序,它将类型和主机名作为命令行参数,然后进行DNS查找。例如:如何在C++中进行DNS AAAA,CNAME和SRV查找?
DNSapp AAAA www.google.com
会从www.google.com等返回IPv6地址。
我可以通过使用gethostbyname来做简单的查找,但我不知道如何执行其他查找。我试图谷歌他们,但没有成功。任何想法如何做到这一点?
我需要一个C++中的小程序,它将类型和主机名作为命令行参数,然后进行DNS查找。例如:如何在C++中进行DNS AAAA,CNAME和SRV查找?
DNSapp AAAA www.google.com
会从www.google.com等返回IPv6地址。
我可以通过使用gethostbyname来做简单的查找,但我不知道如何执行其他查找。我试图谷歌他们,但没有成功。任何想法如何做到这一点?
gethostbyname
已过时,请使用getaddrinfo
查找A/AAAA
查找。
对于SRV
等我推荐ldns
,或相关的libunbound
。后者是图书馆的完整解决方案。
您也可以使用Linux标准库中的res_search
。
在Windows上,GetAddrInfoW
是gethostbyname的正确多值版本。
对于RDNS,getnameinfo
是另一种方式。
GetAddrInfoEx
可能会或可能不会使用SRV记录,我一直无法找到答案。
你在哪个平台上?在Windows/MacOS的/ BSD/Linux呢? – Ben 2012-02-27 11:21:16
我在Linux上编程 – zaplec 2012-02-27 11:27:24
getnameinfo存在于linux中用于RDNS查找。 getaddrinfo也存在,但似乎不支持SRV。 – Ben 2012-02-27 11:55:29