首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用TIdDNSResolver解析dns?

如何使用TIdDNSResolver解析dns?
EN

Stack Overflow用户
提问于 2022-02-26 10:35:52
回答 1查看 214关注 0票数 1

当尝试解析dns时,由于dns错误,查询被拒绝。我的密码有错吗?你能查一下吗?

代码语言:javascript
复制
function Lookup(const Name: String): String;
var
  X: Integer;
  DNS: TIdDNSResolver;
begin
  DNS:= TIdDNSResolver.Create(nil);
  try
    DNS.Host := 'mail.relativ.art';
    DNS.WaitingTime := 5000;
    DNS.QueryType:= [qtMX];
    try DNS.Resolve(Name); except on E: Exception do begin writeln(E.Message); end; end;
    for X:= 0 to DNS.QueryResult.Count-1 do begin
      if DNS.QueryResult[X].RecType = qtMX then
        Result:= TMXRecord(DNS.QueryResult[X]).ExchangeServer;
    end;
  finally
    DNS.Free;
  end;

end;
EN

回答 1

Stack Overflow用户

发布于 2022-02-26 15:30:34

名为mail的主机名(如mail.relativ.art )可能不是DNS服务器。

您需要将Host属性设置为实际的DNS服务器(最好是由ISP提供的服务器,或者像Google这样的公共服务器),然后将所需的目标名称传递给Resolve()

如果您试图查询mail.relativ.art的MX记录,那么这是要解析的目标主机,而不是要发送查询的DNS服务器,例如:

代码语言:javascript
复制
DNS:= TIdDNSResolver.Create(nil);
try
  DNS.Host := '8.8.8.8'; // Google public DNS
  DNS.WaitingTime := 5000;
  DNS.QueryType := [qtMX];
  try
    DNS.Resolve('mail.relativ.art');
  except
    on E: Exception do
    begin
      WriteLn(E.Message);
    end;
  end;
  for X:= 0 to DNS.QueryResult.Count-1 do
  begin
    if DNS.QueryResult[X].RecType = qtMX then
      Result := TMXRecord(DNS.QueryResult[X]).ExchangeServer;
  end;
finally
  DNS.Free;
end;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71275926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档