PDA

Ver la Versión Completa : obtener ip externa de mi router ADSL


hibero
05-12-2003, 00:57:23
Alguien se le ocurre como obtener la ip externa de mi router ADSL sabiendo la ip interna del mismo. Desde delphi claro

SAlu2

delphi.com.ar
05-12-2003, 15:10:48
Aunque no estoy del todo seguro si tendrás acceso, y no se si es la forma mas sencilla, creo que podrás hacerlo a traves de SNMP. En la página del Project Jedi (http://www.delphi-jedi.org) tienes los headers para manejar este protocolo.

Saludos!

__hector
05-12-2003, 21:01:55
Una manera efectiva de lograrlo es haciendo una peticion http a un servidor de esos que proveen informacion acerca del ip con el que te conectas a Internet (la ip del router), tomar lo que te devuelve y determinar el ip.

Ese servicio esta dado por los proveedores de dns dinamicos, ya que existen clientes que instalas en tu maquina y determinan el ip con el que te conectas a Internet para poder actualizar los servidores de dns dinamicos "transparentemente"

Una de esas paginas es http://dynamic.zoneedit.com/checkip.html

Algo de codigo:

Para hacer la peticion http, ClientSocket con las propiedades:
- Host: zoneedit.com
- Puerto: 80
- Active : true


with ClientSocket do begin
Socket.SendText('GET http://dynamic.zoneedit.com/checkip.html HTTP/1.0'+#13#10);
Socket.sendText('Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/vnd.ms-excel, */*'+#13#10);
Socket.SendText('Referer: http://www.zoneedit.com/'+#13#10);
Socket.sendText('User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'+#13#10);
Socket.SendText('Host: www.zoneedit.com'+#13#10);
Socket.sendText('Content-Length: 0'+#13#10);
Socket.sendText(''+#13#10);
Socket.sendText(''+#13#10);
end;


Cuando reciba la respuesta del servidor, parseamos la respuesta para tomar el IP (en un string):


procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
str : string;
posIp : integer;
posFin : integer;
ip : string;
begin
str := cs.Socket.ReceiveText;
posIp := pos('Current IP Address:', str);
posFin := pos('<br>Hostname', str);
ip := copy(str, posIp + 20, posFin - (posIp + 22));
end;

danytorres
09-06-2005, 13:28:13
Buenos dias a todos hertor estoy tomando tu codigo y lo monto para que me de la ip y no me da erro pero no me da la ip no me da nada, que puede ser????

amadis
12-06-2005, 18:30:55
¿No te sirve un DNS?

Si te sirviera chusmea myvnc.com.

Y el tema e que tenes que habilitar que el Router no sólo routee los servicios sino quetambien la IP.