我在哪里可以找到一个c++ DNS库

Where can I find a C++ DNS Library?

本文关键字:一个 c++ DNS 在哪里      更新时间:2023-10-16

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

你可以用NSLookup或Dig工具手动指定DNS服务器地址,但似乎Windows API调用(例如GetAddressByName)不允许我指定要查询的服务器,而是使用系统配置的目标。

我试图查找DNS的rfc,但不幸的是,它们对我来说非常清晰——它们使HTTP规范看起来像有史以来最清晰、写得最好的规范。

我也不想重新发明别人已经做过好几次的东西。

您可以尝试:http://25thandclement.com/~william/projects/dns.c.html。另外,请参见需要在C

中构建简单的DNS解析器

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

尝试c-ares库,据我所知它确实实现了自己的DNS堆栈。我在linux上成功地使用过它,他们说它支持Windows,尽管我自己还没有尝试过。它不是c++,只是普通的C,但你可以很容易地为它编写一个c++包装器。

它的异步性获得了额外的好处,并提供了可以将其与现有事件循环集成的钩子。

我知道这个问题很老了,但是我还没有找到适合我的答案。我发现poslib是最好的dns库,具有非常简单的接口。

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

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

我从来没用过这个,但也许这对你有帮助?

我建议libunbound(与ldns一起)是一个独立的库,包含在Unbound递归解析器中。

它还支持DNSSEC验证,随着DNSSEC的继续部署,这将变得很有用。

见http://unbound.net/

djbdns包含一个DNS客户端库,您可以使用:

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

这独立于系统DNS解析器库,并将生成正确的UDP数据包。如果您真的想聪明一点,可以将它与dnscache结合使用,或者使用dnstrace实用程序从根服务器解析名称,看看到底发生了什么。

当然,你需要让它在Windows上工作。应该不难。