自己程序用到,一般查询A记录的代码到处都是,非A记录却很少见到,至少百度没搜到,记录下来,测试环境Delphi 2007 + Indy 10.1.5。
function GetDNS():string;
var
DNS: TIdDNSResolver;
MyRecord: TResultRecord;
Txt: TTextRecord;
Timeout:integer;
s:string;
begin
s:='';
Timeout:=5000;
DNS := TIdDNSResolver.Create(nil);
try
DNS.WaitingTime := Timeout;
//这里据我测试,必须设置DNS服务器地址
DNS.Host := '114.114.114.114';
//重要的是这里,设置查询类型
DNS.QueryType := [qtTXT];
//解析这个主机名
DNS.Resolve('tingtao.org');
if DNS.QueryResult.Count>0 then
begin //如果同时查询多个纪录,用for循环一下
MyRecord := DNS.QueryResult[0];
Txt := TTextRecord(MyRecord);
s:=txt.Text.Text;
end;
finally
DNS.Free;
end;
result:=s;
end;如果多个记录的话,这几行有所更改:
DNS.QueryType := [qtTXT, qtService];
for I := 0 to DNS.QueryResult.Count -1 do
MyRecord := DNS.QueryResult[I];
case Record.RecType of
begin
qtTXT: begin
Txt := TTextRecord(Record);
