1

ネイキッド ホスト名 (例: _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でこれを経験した人はいますか?

提案をありがとう、ロバート

4

1 に答える 1

2

nslookup で動作する理由は、windows が構成されているドメイン サフィックスを使用してすべての検索を実行しているためです。これを実際に確認するには、nslookup を起動してから「set debug」コマンドを発行します。ここで検索を実行すると、マシンが送受信したリクエストとレスポンスが表示されます。構成されたドメイン サフィックスの 1 つが追加されて一致する前に、「裸のホスト名」に対して応答されないものがあります。

これが役立つことを願っています。

ジョナサン

さまざまな種類のクエリで DNS をクエリするために使用できる無料の DNS クライアント ライブラリを次に示します

于 2011-06-22T09:13:25.413 に答える