我在哪里可以找到C ++ DNS库?

时间:2011-07-19 22:46:20

标签: c++ winapi dns

我知道DNS通常由操作系统处理,但我的工作是假设DNS已在目标系统上被破坏(这是诊断DNS配置错误的工具)。因此,我需要自己实现DNS,以检查我从系统对已知良好的DNS服务器返回的结果。

您可以使用NSLookup或Dig工具执行此操作,手动指定DNS服务器地址,但看起来Windows API要求执行此操作(例如GetAddressByName)不允许我指定要查询的服务器,改为使用系统配置的目标。

我试图在DNS上寻找RFC,但不幸的是它们对我来说很明显 - 它们使得HTTP规范看起来像是有史以来最清晰,编写最好的规范。

我也不想重新发明其他人之前已做过好几次的事情。

6 个答案:

答案 0 :(得分:2)

您可以尝试:http://25thandclement.com/~william/projects/dns.c.html。另请参阅Need To Build Simple DNS Resolver in C

实际上,谷歌搜索“DNS解析器C”会发现几种可能性。

答案 1 :(得分:1)

http://www.vantage-points.org/libvdns.html

http://directory.fsf.org/project/FireDNS/

从未使用过这个,但也许这对你有帮助吗?

答案 2 :(得分:1)

我知道问题已经过时了,但我在这里找不到好的答案。 我发现poslib是最好的dns库,界面非常简单。

答案 3 :(得分:0)

尝试the c-ares library,据我了解它确实实现了自己的DNS堆栈。我在linux上成功使用它,他们说它支持Windows,虽然我自己没有尝试过。它不是C ++,只是普通的C,但你可以轻松地为它编写C ++包装器。

它获得异步的奖励积分,并提供钩子,通过它可以将它与现有的事件循环集成。

答案 4 :(得分:0)

djbdns包含您可以使用的DNS客户端库:

http://cr.yp.to/djbdns/dns.html

这与系统DNS解析程序库无关,并将生成正确的UDP数据包。如果你真的想变得聪明,可以将它与dnscache结合起来,或者查看dnstrace实用程序来解析根服务器的名称,看看究竟发生了什么。

当然,你需要让它在Windows上运行。不应该那么难。

答案 5 :(得分:0)

我建议libunbound(与ldns一起)是Unbound递归解析器附带的独立库。

它也具有DNSSEC验证支持,随着DNSSEC继续部署,它将变得非常有用。

请参阅http://unbound.net/

相关问题