我正在尝试使用裸主机名(例如 _service._proto)查询一组 SRV 记录,但是这会失败,除非我还包括域名。这很奇怪,因为 nslookup 等其他工具可以正常工作,并且使用相同的 API 调用来查询 A 记录也可以在裸主机名下正常工作。
dsRet = DnsQuery("_service._udp",DNS_TYPE_SRV,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL);//==DNS_ERROR_RCODE_NAME_ERROR
dsRet = DnsQuery("_service._udp",DNS_TYPE_TEXT,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL);//==DNS_ERROR_RCODE_NAME_ERROR
dsRet = DnsQuery("_service._udp.example.com",DNS_TYPE_SRV,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL);//==ERROR_SUCCESS
dsRet = DnsQuery("_service._udp.example.com",DNS_TYPE_TEXT,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL);//==ERROR_SUCCESS
dsRet = DnsQuery("collector",DNS_TYPE_A,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL); //==ERROR_SUCCESS
我当然可以查询系统以获取主域名,甚至可能是所有配置的搜索域,但我很确定我不应该这样做。我几乎找不到对 Windows DNS API 的引用,所以我想知道是否有更好的方法来查询 TXT 和 SRV 记录。有没有人在 Windows 下有这方面的经验?
感谢您的任何建议, 罗伯特
最佳答案
它在 nslookup 下工作的原因是 Windows 正在使用配置的域后缀执行所有搜索。要查看实际效果,请启动 nslookup,然后发出“set debug”命令。现在执行您的搜索,您将看到您的机器发送和接收的请求和响应。在附加和匹配配置的域后缀之一之前,“裸主机名”将有一个未回答的。
希望这对您有所帮助。
乔纳森
这是一个免费的 DNS 客户端库,您可以使用它来针对不同类型的查询查询 DNS:http://www.simpledns.com/dns-client-lib.aspx还有http://arsofttoolsnet.codeplex.com
关于windows - 如何从 Windows 查询 TXT 和 SRV 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5111264/