Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   obtener ip externa de mi router ADSL (https://www.clubdelphi.com/foros/showthread.php?t=5807)

hibero 05-12-2003 00:57:23

obtener ip externa de mi router ADSL
 
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 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

Código:

  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):

Código:

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

Respuesta OBTENER IP EXTERNA
 
¿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.


La franja horaria es GMT +2. Ahora son las 10:51:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi