PDA

Ver la Versión Completa : Obtener IP Real con Indy


Carlos Hurtado
26-08-2005, 15:18:02
Hola amigos soy un usuario normal del foro de Firebird, pero hace algunos dias tuve que formatear el disco y no tenia respaldada una rutina en Delphi 7 que me permitia tener la IP Real de mi computador.

Recuerdo que llamaba a 'htp://checkip.dyndns.org/' y recibia en un Edit mi IP.

Gracias.

dec
26-08-2005, 15:34:24
Hola,

No utiliza los componentes Indy (http://www.indyproject.org/), pero, esta función (http://delphi.about.com/od/networking/l/aa103100a.htm) que publica Zarko Gajic (http://delphi.about.com/mbiopage.htm) parece funcionar bien.

Carlos Hurtado
26-08-2005, 21:19:20
Hola amigos la rutina de Zarko Gajic solo lee la IP local no la que desde otro punto en Internet corresponde a mi computados.
Y necesito esta rutina ya que lo que manejara son IP Dinamicas. De tal modo que cuando parta el servidor comunicar la IP Real a los Clientes.
Ojala alguien tenga esa rutina.

dec
27-08-2005, 06:09:45
Hola,

No entiendo mucho sobre el asunto (¿Sobre qué entiendo yo?) pero la función susomentada me ofrece la IP del ordenador "conectado a Internet", esto es, no es la IP local (o me equivoco) pero la IP que me da el Servidor de acceso a Internet... pero, si dices que es la local, pues será la local... ya digo que no entiendo mucho del tema... Lo lamento. Es probable que alguien aclare esto. Gracias de todos modos.

Antuan
27-08-2005, 20:58:21
Creo que si tienes una conexsion a Internet directamente bien por acceso telefonico a redes o una tarjeta de red conectada directamente a un modem ADSL o a Moden cable o al moden USB o incluso un cable-moden conectado a un shuit con varios ordenadores y que el proveedor te de varias IPs la direccion o direciones de IPs que saca cualquier rutina son las Ips reales (las de Internet).
Pero si tiene acceso a internet atraves de un router las funciones siempre daran las Ips locales.
No recuendo en que hilo de los del apartado de Internet habia uno que ofrecia varias paginas web que te dan la posibiladad de ver en el Body del html la IP real. y que luego habia que presentarla en un Text.
Pero no recuerdo que viniera la funcion de agregar la IP al Text.
Que creo que es lo que tu buscas.?
Yo tengo una red local y tengo router y a mi siempre me da la IP local.

DarkByte
28-08-2005, 12:31:14
Sinceramente, es un poquito cansina la pregunta por las veces que se ha preguntado.

Carlos, ¿has intentado ver tu pregunta desde el punto de vista de la red?. Si estás en red, tu ordenador no posee NINGUNA información de la ip pública que muestra sus datos, ya que de estos se ocupa el router o concentrador. Unicamente podrás acceder a tu ip que muestras en tu red o LAN.

Eso sí, nadie dice que sea imposible. Te ofrezco estas posibilidades.

Visitar una web que te de tu ip y parsearla. De esto hay un ejemplo en el foro y tiene el inconveniente de que si el usuario ha establecido un proxy High Anonymous pues... no hay narices de sacar la ip
Conectarte a irc y hacer un userip a tu propio usuario (solucion algo bestia)
Hacer tu propio servidor que tenga una opcion para devovler la ip.
Esperar a que otro de ClubDelphi tenga mejores ideas o que yo vuelva de desayunar... que con el estómago vacío pocas ideas tengo


Bueno, también puedes ir al parque de atracciones y desahogarte un poco gritando... para gustos, distribuciones de linux :)

MasterXP
29-08-2005, 08:45:18
http://myipaddress.com

esa web te da la IP externa..

DarkByte
29-08-2005, 16:53:13
Wa, wa, wa.

MasterXP... ¿y si usa un proxy high anonymous en su red? :)

Carlos Hurtado
01-09-2005, 00:56:03
Hola amigos, estoy muy agradecido de vuestros comentarios. Pero como lo habia planteado en un principio logre configurar una rutina que me da la IP publica o Real.

por si alguien la necesita, ahi va:

En la correspondiente Form coloco un componente Indy TldHTTP y hago esta procedure que me da el nombre del Host, la IP Local y la IP Real.

Lo que esta en rojo es lo importante, el resto esparte de rutinas de archivos .ini para cargar direcciones de correo.


procedure TfrmMain.TabSheet1Show(Sender: TObject);
var
Host, IP, Err: string;
StartPos, Leng: integer;
IPR, HTMLBody, Editor: string;
conectado:boolean;
Fileini : TInifile;
begin
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
FileIni := TIniFile.Create('CORREO.INI');
Editor:= FileIni.ReadString('options','Editor','');
if Editor = '' then
begin
Editor := 'NOTEPAD.EXE';
FileIni.WriteString('options','Editor',Editor);
end;
CargaCorreos;
if GetIPFromHost(Host, IP, Err) then begin
LabeledEdit1.Text := Host;
LabeledEdit2.Text := IP;
end
else
MessageDlg(Err, mtError, [mbOk], 0);
conectado:= internetgetconnectedstate(0,0);
if conectado then
begin
HTMLBody := IdHTTP1.Get('http://checkip.dyndns.org/');
StartPos := Pos(StartText, HTMLBody) + Length(StartText);
Leng := Pos(EndText, HTMLBody) - StartPos;
IPR := Copy(HTMLBody, StartPos, Leng);
LabeledEdit3.Text := IPR;
end
else
MessageDlg('No esta conectado a Internet', mtError, [mbOk], 0);
end;

Como en esta form tengo otras rutinas (obvio) a continuacion consigno el uses de la form para que extraigan lo que corresponde.

Windows,
Messages,
SysUtils,
Classes,
Graphics,
Controls,
Forms,
Dialogs,
StdCtrls,
ExtCtrls,
ComCtrls,
Grids,
Menus,
ActnList,
uSingleInst,
uConfig,
TrayIcon,
Winsock, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP,
WinInet,
IniFiles;

GRACIAS AMIGOS.