2012-02-27 77 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記錄,我一直無法找到答案。