PDA

Ver la Versión Completa : Saber IP pública


D@byt
17-10-2005, 01:02:25
¿Cómo puedo saber mi IP pública? Si hay algún componente o algún método. Muchas gracias.

RazoR
17-10-2005, 02:08:04
Fijate en el truco #82 de Trucomania (http://www.trucomania.q3.nu).


Si no quieres complicarte la vida, usa el componente TCP que tienes en la paleta de componentes de
internet y bastará con que leas sus propiedades LocalHostName y LocalIp

Por ejemplo:




Memo1.Lines.Add(TCP1.LocalHostName);
Memo1.Lines.Add(TCP1.LocalIp);





Si no quieres usar el componente TCP puesto que es un OCX que luego da más complicaciones a la
hora de instalarlo en otra máquina... puedes usar este otro método para leerlo directamente:

-Crea una form (Form1) y pon en ella un TButton (Button1) y un TMemo (Memo1)
-Incluye 'Winsock' en la parte uses
-En el evento OnCreate de la form incluye éste código:



procedure TForm1.FormCreate(Sender: TObject);
var
wVersionRequested : WORD;
wsaData : TWSAData;
begin
{Start up WinSock}
wVersionRequested := MAKEWORD(1, 1);
WSAStartup(wVersionRequested, wsaData);
end;




-En el evento OnClick del Button1 pon este código:



procedure TForm1.Button1Click(Sender: TObject);
var
p : PHostEnt;
s : array[0..128] of char;
p2 : pchar;
begin
{Get the computer name}
GetHostName(@s, 128);
p := GetHostByName(@s);
Memo1.Lines.Add(p^.h_Name);
{Get the IpAddress}
p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
Memo1.Lines.Add(p2);
end;




-Finalmente, en el evento OnDestroy de la Form1 pon este código:



procedure TForm1.FormDestroy(Sender: TObject);
begin
{Shut down WinSock}
WSACleanup;
end;





y ya está...

__hector
17-10-2005, 15:30:55
Eso se ha tratado infinidad de veces en este foro. Realiza una pequeña busqueda con ese criterio, ip publica, y veras distintas soluciones a tu pregunta.

RazoR
17-10-2005, 16:29:30
Es que puede no haber encontrado nada debido a que IP tiene sólo 2 caracteres y los caracteres mínimos para que los incluya en la búsqueda son 3... me pasó varias veces :(

dec
17-10-2005, 20:16:46
Hola,



Es que puede no haber encontrado nada debido a que IP tiene sólo 2 caracteres y los caracteres mínimos para que los incluya en la búsqueda son 3... me pasó varias veces :(

Para otros casos podrías hacer algo así, por ejemplo, buscar: "información DLL*", sin las comillas, pero con el asterisco. En el caso de IP no parece funcionar siquiera con el asterisco. Empero, si te limitas a buscar "saber pública" encontrarás Hilos que tratan sobre lo que se trata en este. :D

roman
17-10-2005, 23:06:32
Otra opción es hacer la búsqueda en los foros vía Google (http://www.google.com.mx/search?as_q=&num=10&hl=es&btnG=B%C3%BAsqueda+en+Google&as_epq=ip+publica&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=http%3A%2F%2Fwww.clubdelphi.com&safe=images)

// Saludos

vtdeleon
17-10-2005, 23:38:22
Otra opción es hacer la búsqueda en los foros vía Google (http://www.google.com.mx/search?as_q=&num=10&hl=es&btnG=B%C3%BAsqueda+en+Google&as_epq=ip+publica&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=http%3A%2F%2Fwww.clubdelphi.com&safe=images)
Vaya, buen truco:D:D

//Saludos

RazoR
18-10-2005, 00:59:44
Otra opción es hacer la búsqueda en los foros vía Google (http://www.google.com.mx/search?as_q=&num=10&hl=es&btnG=B%C3%BAsqueda+en+Google&as_epq=ip+publica&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=http%3A%2F%2Fwww.clubdelphi.com&safe=images)

// SaludosTenés razón :D No me di cuenta de hacer eso :p

Spynosa
18-10-2005, 09:29:18
esto esta copiado de una respuesta en este foro, que es cierto que se ha tratado mucho, como no me acuerdo del enlace te lo pongo por si te sirve:

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
x,s:ansistring;
smtp: TIdSMTP;
begin
x:=IdHTTP1.Get('http://checkip.dyndns.org');
i:= AnsiPos('Address:',x);
i:=i+9;
while x[i]<>'<' do
begin
s:=s+x[i];
inc(i);
end;
Edit1.Text:=s;
end;