como saber o IP da Internet (não o da rede local)

Delphi

21/06/2005

como saber o IP da Internet e não o da rede local, pois todos os exemplos q testei, quando executo ele traz o ip da rede e não o IP da net


Fabiogr

Fabiogr

Curtidas 0

Respostas

Sandra

Sandra

21/06/2005

Fábio,

Dica do DTDelphi 2.7:

[quote:98aaff7c0f=´Lloyd Dickinson´]623 - Retorna o IP de sua máquina no momento em que você está conectado

function GetIP: string; 
//--> Declare a Winsock na clausula uses da unit

var
  WSAData: TWSAData;
  HostEnt: PHostEnt;
  Name: string;
begin
  WSAStartup(2, WSAData);
  SetLength(Name, 255);
  Gethostname(PChar(Name), 255);
  SetLength(Name, StrLen(PChar(Name)));
  HostEnt := gethostbyname(PChar(Name));
  with HostEnt^ do
  begin
    Result := Format(´¬d.¬d.¬d.¬d´,
    [Byte(h_addr^[0]),Byte(h_addr^[1]),
    Byte(h_addr^[2]),Byte(h_addr^[3])]);
  end;
  WSACleanup;
end;

[/quote:98aaff7c0f]

Para visualizar, testei assim e funcionou perfeitamente:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetIP);
end;


Espero que ajude.


GOSTEI 0
Massuda

Massuda

21/06/2005

como saber o IP da Internet e não o da rede local...
Imagino que você esteja em uma rede local com acesso à internet via proxy ou coisa parecida... nesse caso, a única forma de obter o IP visível na internet (que é o IP usado pela maquina que dá acesso à internet) é perguntando para alguém de fora da rede local qual IP ela está vendo... para isso, use, por exemplo, os dados contidos no site [url=http://www.meuip.com.br/]MeuIP[/url].


GOSTEI 0
Sandra

Sandra

21/06/2005

Imagino que você esteja em [b:2781b590fd]uma rede local com acesso à internet via proxy ou coisa parecida[/b:2781b590fd]...

Ihh, acho que não prestei atenção NO detalhe. :oops:
Massuda, obrigada pela correção. :D


GOSTEI 0
Janete

Janete

21/06/2005

[quote:d2f8fea335=´fabiogr´]como saber o IP da Internet e não o da rede local...
Imagino que você esteja em uma rede local com acesso à internet via proxy ou coisa parecida... nesse caso, a única forma de obter o IP visível na internet (que é o IP usado pela maquina que dá acesso à internet) é perguntando para alguém de fora da rede local qual IP ela está vendo... para isso, use, por exemplo, os dados contidos no site [url=http://www.meuip.com.br/]MeuIP[/url].[/quote:d2f8fea335]

É exatamente esse IP que eu preciso, só que gostaria de tipo colocar uma função que traga o IP direto no sistema, sem precisar abrir o site.


GOSTEI 0
Massuda

Massuda

21/06/2005

O que você quer dizer com ´direto do sistema´?

Numa máquina que está numa rede local acessando a internet via proxy (ou coisa parecida) só existe o IP da rede local. O IP da internet está na máquina (se houver) com acesso à internet; como muitas vezes essa ´máquina´ com acesso à internet não é um PC, a única forma garantida de saber o IP da internet é abrir um site que informe seu IP.


GOSTEI 0
Adriano Santos

Adriano Santos

21/06/2005

[quote:8a154a3087=´fabiogr´]como saber o IP da Internet e não o da rede local...
Imagino que você esteja em uma rede local com acesso à internet via proxy ou coisa parecida... nesse caso, a única forma de obter o IP visível na internet (que é o IP usado pela maquina que dá acesso à internet) é perguntando para alguém de fora da rede local qual IP ela está vendo... para isso, use, por exemplo, os dados contidos no site [url=http://www.meuip.com.br/]MeuIP[/url].[/quote:8a154a3087]

Com base na idéia do [b:8a154a3087]Massuda[/b:8a154a3087] elaborei um exemplo com o componente TidHttp da paleta Indy, funciona, mas não sei se é o suficiente pro seu caso.

Coloca um label, um button e um TidHttp no form. No onClick digita o algoritimo que eu coloquei abaixo;


procedure TForm1.Button1Click(Sender: TObject);
var
  strFull : string;
begin
  strFull := idHttp1.Get(´http://www.meuip.com.br´);
  Label1.Caption := Copy(strFull,Pos(´<strong class="IP">´, strFull) + 19, 14);
end;



GOSTEI 0
Janete

Janete

21/06/2005

[quote:0c7b561023=´Adriano Santos´]
[quote:0c7b561023=´fabiogr´]como saber o IP da Internet e não o da rede local...
Imagino que você esteja em uma rede local com acesso à internet via proxy ou coisa parecida... nesse caso, a única forma de obter o IP visível na internet (que é o IP usado pela maquina que dá acesso à internet) é perguntando para alguém de fora da rede local qual IP ela está vendo... para isso, use, por exemplo, os dados contidos no site [url=http://www.meuip.com.br/]MeuIP[/url].[/quote:0c7b561023]

Com base na idéia do [b:0c7b561023]Massuda[/b:0c7b561023] elaborei um exemplo com o componente TidHttp da paleta Indy, funciona, mas não sei se é o suficiente pro seu caso.

Coloca um label, um button e um TidHttp no form. No onClick digita o algoritimo que eu coloquei abaixo;


procedure TForm1.Button1Click(Sender: TObject);
var
  strFull : string;
begin
  strFull := idHttp1.Get(´http://www.meuip.com.br´);
  Label1.Caption := Copy(strFull,Pos(´<strong class="IP">´, strFull) + 19, 14);
end;
[/quote:0c7b561023]

Obrigado isso já resolve minha questão.


GOSTEI 0
POSTAR