Saber IP Publica atraves de un router

shock
14 de Julio del 2004
Pues eso me gustaria saber como podria saber la direccion IP Publica que me asigna el ISP ya que tengo un router, hay paginas que te dicen cual es tu ip pero me gustaria hacer un simple programa en delphi que en un caption sacar la ip publica, gracias

Balmung
14 de Julio del 2004
Obtener el nombre de la m谩quina local de Internet y la direcci贸n IP se obtiene f谩cilmente usando el componente TCP. Coloca un componente TCP de la ficha Internet de la paleta de componentes a un form y tambi茅n agrega un Componente Memo y un Bot贸n. Dentro del evento Onclick del bot贸n pondr铆as el siguiente c贸digo.

Memo1.Lines.Add(TCP1.LocalHostName);



Memo1.Lines.Add(TCP1.LocalIp);


Ahora si no quieres usar el TCP aqu铆 tienes otro c贸digo que utiliza el Winsock. Coloca un Bot贸n en tu Form.

Agrega Winsock en el Uses de tu form.
Pon este c贸digo en el evento Oncreate de tu Form.
procedure TForm1.FormCreate(Sender: TObject);

var

wVersionRequested : WORD;

wsaData : TWSAData;

begin

wVersionRequested := MAKEWORD(1, 1);

WSAStartup(wVersionRequested, wsaData);

end;



Pon este c贸digo en el evento Onclick del Bot贸n.
procedure TForm1.Button1Click(Sender: TObject);

var

p : PHostEnt;

s : array[0..128] of char;

p2 : pchar;

begin

//Toma el nombre de la Computadora.

GetHostName(@s, 128);

p := GetHostByName(@s);

Memo1.Lines.Add(p^.h_Name);

//Toma la IP de la Computadora.

p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);

Memo1.Lines.Add(p2);

end;



Pon este c贸digo en el evento Ondestroy de tu Form.
procedure TForm1.FormDestroy(Sender: TObject);

begin

WSACleanup;

end;