Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Windows查询TXT和SRV记录?_Windows_Networking_Dns_Nslookup_Dns Sd - Fatal编程技术网

如何从Windows查询TXT和SRV记录?

如何从Windows查询TXT和SRV记录?,windows,networking,dns,nslookup,dns-sd,Windows,Networking,Dns,Nslookup,Dns Sd,我正在尝试使用裸主机名(例如_service._proto)查询一组SRV记录,但除非我还包括域名,否则将失败。这很奇怪,因为其他工具(如nslookup)可以很好地工作,并且还可以使用相同的API调用来查询记录,这些工具可以很好地处理裸主机名 dsRet = DnsQuery("_service._udp",DNS_TYPE_SRV,DNS_QUERY_STANDARD,NULL,&pQueryResultsSet,NULL);//==DNS_ERROR_RCODE_NAME_ERRO

我正在尝试使用裸主机名(例如_service._proto)查询一组SRV记录,但除非我还包括域名,否则将失败。这很奇怪,因为其他工具(如nslookup)可以很好地工作,并且还可以使用相同的API调用来查询记录,这些工具可以很好地处理裸主机名

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下使用此功能的经验吗

谢谢你的建议,
Robert

它在nslookup下工作的原因是windows使用其配置的域后缀执行所有搜索。要查看此操作,请启动nslookup,然后发出“set debug”命令。现在执行搜索,您将看到计算机发送和接收的请求和响应。在附加和匹配一个已配置的域后缀之前,“裸主机名”将有一个未经授权的后缀

希望这有帮助

乔纳森

这里有一个免费的DNS客户端库,您可以使用它来查询DNS以获得不同类型的查询: