delphi indy IdDNSResolver没有返回所有请求的dns结果

Sof*_*uch 6 delphi dns indy

根据文档,我应该能够在查找中添加多个查询类型,但结果始终只有1种类型.

例如,我设置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');
...
Run Code Online (Sandbox Code Playgroud)

id.QueryResult.count只有1,它只包含A记录.

那么如何在1个查询中获得所有3种类型?

DNR*_*DNR 1

RFC 1035中描述了 DNS 请求。根据此文档,允许在同一请求中发送多个问题,我假设这就是在 Indy 中以这种方式实现的原因。

在实践中,DNS服务器通常不支持这一点,即使有多个问题也只返回一个答案。您可以在这篇文章以及从那里链接的文章中找到更多信息。

我假设 DNS 服务器会回答第一个问题,因此如果您传递具有多种类型的数组,则可能会得到 id 最低的类型的答案。在你的情况下,优先级是qtA > qtNS > qtMX. 如果您需要所有这些问题的答案,则应该单独解决它们。