Saber IP Publica atraves de un router
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
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;
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;
