PDA

Ver la Versión Completa : Consultas al DNS con idDNSResolve


fide_uci
17-05-2011, 22:46:13
Hola amigos. Saludos a todos los que han leido el post.

Mi problema es el siguiente. Necesito hacer consultas al DNS con idDNSResolve. Tengo Indy 10 y Delphi 7. En la aplicacion que estoy desarrollando tengo varias IP y necesito obtener los nombres correspondientes a dichas IP's. Alguien sabe como hacer esto con el componente idDNSResolve de la Indy?.

Gracias desde ya para todos.

Ñuño Martínez
18-05-2011, 10:39:25
Si tienes la IP no necesitas resolver nada, y menos por DNS; DNS son las siglas de Domain Name Resolver, es decir, que toma un nombre de dominio y devuelve la dirección IP. El proceso contrario no se puede hacer, o al menos no te dará un valor fiable, ya que una IP puede responder a varios nombres de dominio. Por ejemplo, mi página web (www.burdjia.com) tiene la misma IP que ClubDelphi, ya que ambas están en el mismo servidor.

Al menos que me esté perdiendo algún capítulo...

fide_uci
18-05-2011, 14:14:55
Sisi entiendo a lo que te refieres, pero ten en cuenta que esto si se puede hacer creo yo dado que cuando haces un Lookup de un IP puede que te devuelvan un hostname o varios, los cuales tendrias que recorrer tu para ver todos los dominios asociados. De todas formas me voy a documentar un poco mas en este tema y luego te comento que tal.

fide_uci
18-05-2011, 14:22:36
Mira por ejemplo esta es una funcion que dado el IP te devuelve el nombre pero es usando Winsock y me imagino que automaticamente utiliza el DNS configurado en Windows, que es lo que me choc pues yo lo que necesito es poder utilizar un servidor DNS que tengo montado y no el que esta configurado en Windows.


uses Winsock;

function GetHostFromIP(sIPAddress: string): string;
var
WSAData: TWSAData;
addr : Cardinal;
lpHost1: PHostEnt;
begin
Result := '';
if WSAStartup(MakeWord(1,0), WSAData) = 0 then
begin
addr := inet_addr(PChar(sIPAddress));
lpHost1 := GetHostByAddr(@addr, sizeof(addr), AF_INET);
if lpHost1 <> nil then
Result := StrPas(lpHost1^.h_name)
else
Result := sIPAddress;
WSACleanup;
end;
end;


Un ejemplo de uso


Caption := GetHostFromIP('10.0.0.22');

Ñuño Martínez
20-05-2011, 13:12:26
Mira por ejemplo esta es una funcion que dado el IP te devuelve el nombre pero es usando Winsock y me imagino que automaticamente utiliza el DNS configurado en Windows, que es lo que me choc pues yo lo que necesito es poder utilizar un servidor DNS que tengo montado y no el que esta configurado en Windows.Pues lo único que se me ocurre es ver si Indy o JEDI tienen un componente para comunicarse con servidores DNS. Y si no, informarse de cómo funciona el protocolo y hacerlo a mano. :o