现在,我的应用程序在c-ares下面的Windows上使用cURL异步DNS解析程序库,我让用户抱怨它的行为与其他Windows应用程序不同。一位特定用户说“其他应用程序正在使用Microsoft DNS客户端”并且没有遇到任何问题。
cURL本身有一个异步DNS实现,它在一个线程中使用getaddrinfo()。我猜这是使用“DNS客户端”及其主机功能(例如DnsQuery?)的等效行为。
所以,亲爱的Lazyweb,我问getaddrinfo()的行为与使用Win32 API中的实际Dns * API之间是否存在切实的区别。
答案 0 :(得分:1)
查看源代码似乎实际上实现了用于查询主机名的dns协议(并且不直接调用getaddrinfo) - 我希望错过WINS查找之类的东西,而且上帝知道其他什么类型的东西窗口可以查找名称。
答案 1 :(得分:0)
在Windows上进行DNS查询的最简单方法是使用DNSQuery(和派生函数,utf8,wbytes,ansi)。除非您需要异步解析,否则我建议继续使用c-ares或其他类似的API。
我不确定WINS或其他Windows特定解决方案(不是DNS规范的一部分)没有被c-ares覆盖。如果你能给我们一些例子,那将会很有帮助,也许我们也可以用c-ares来实现它们。