delphi dns delphi-xe2 indy indy10

delphi - ¿Lectura de respuesta de TIdDNSResolver?



delphi-xe2 indy (1)

Deberá encasillar el QueryResult recopilación QueryResult en un descendiente TResultRecord específico según el valor de la propiedad RecType del elemento. Desde la referencia de propiedad Items :

Use casting para devolver una referencia de objeto que permita el acceso a cualquier propiedad o método específico de la clase descendiente asociada con el valor en TResultRecord.RecType.

El patrón de nombre de las clases descendientes TResultRecord es así:

T<DNS lookup type>Record

Entonces, en tu caso, se vería así:

for X := 0 to DNS.QueryResult.Count - 1 do begin if DNS.QueryResult[X].RecType = qtA then Result := TARecord(DNS.QueryResult[X]).IPAddress; // "A" lookup -> TARecord end;

Para un tipo de búsqueda AAAA sería:

for X := 0 to DNS.QueryResult.Count - 1 do begin if DNS.QueryResult[X].RecType = qtAAAA then Result := TAAAARecord(DNS.QueryResult[X]).Address; // "AAAA" lookup -> TAAAARecord end;

Ejemplos de funciones para las búsquedas de DNS IPv4 e IPv6 que puede find here .

No puedo encontrar ningún ejemplo simple de una búsqueda DNS utilizando el componente TIdDNSResolver Indy 10. Todos son para algo que no necesito (como MX / SMTP), o son términos sin código . Intenté leer el resultado en función de los pocos recursos que puedo encontrar, pero no sé cómo se supone que debo leer el resultado.

Esto es lo que tengo hasta ahora ...

uses IdBaseComponent, IdComponent, IdTCPConnection, IdDNSResolver; function TForm1.Lookup(const Name: String): String; var X: Integer; begin //DNS: TIdDNSResolver DNS.QueryType:= [qtA]; DNS.Resolve(Name); for X:= 0 to DNS.QueryResult.Count-1 do begin if DNS.QueryResult[X].RecType = qtA then //Result:= DNS.QueryResult[X].RData; <--- ???? end; end;

uso...

HostIP:= Lookup(''www.google.com'');

¿Cómo leo esta respuesta?