2017-02-04 3 views
6

ドキュメントに基づいて、検索に2つ以上のクエリタイプを追加できるはずですが、結果は常に1つだけです。delphi indy IdDNSResolverが要求されたすべてのDNS結果を返さない

たとえば、id.QueryType:= [qtNS、qtA、qtMX]を設定します。私はAレコードを返すだけです。 qtAを削除すると、3つのNSレコードが返されますが、MXは返されません。それらのそれぞれは、うまく動作します。

例:

id:=TIdDNSResolver.Create(nil); 
id.Host:='8.8.8.8'; 
id.QueryType:='[qtNS, qtA, qtMX]; 
id.Resolve('car.com'); 
... 

id.QueryResult.countがちょうど1であり、それが唯一のレコードが含まれています。

どのように1つのクエリで3つのタイプすべてを取得できますか?

答えて

2

DNSリクエストは、RFC 1035で記述されています。このドキュメントによると、同じリクエストで複数の質問を送信することは許可されているので、私はそれがIndyでこのように実装されていると仮定しています。

praxisでは、DNSサーバーは通常これをサポートせず、複数の質問があっても1つの回答のみを返します。 this postに詳しい情報があり、そこからリンクされています。

DNSサーバーがの最初のという質問に答えると仮定します。したがって、複数の型を持つ配列を渡すと、IDが最も小さい型の答えが返されます。あなたの場合、優先順位はqtA > qtNS > qtMXになります。すべての回答が必要な場合は、個別に解決する必要があります。

+0

ありがとうございました。 – Softtouch

関連する問題