Ip externo (internet)

Delphi

23/03/2007

Olá Pessoal,

Preciso criar um programa em delphi para ficar ativado na máquina, verificando mudanças de IP feitas pelas provedoras de internet, por exemplo, Brasil Telecom. Tenho conexões com IP váriavel e volta e meia a operadora muda os ips por não serem fixos. Sera que alguém tem alguma função que possa recuperar qual é o ip que a máquina possa estar usando no momento para acesso a internet?

Obrigado a todos.
Abraço.

Goncalves_e


Goncalves

Goncalves

Curtidas 0

Respostas

Aldus

Aldus

23/03/2007

Olá goncalves, o site www.meuip.com.br retorna justa o que você deseja.
Para capturar o ip insira um componente idHTTP na sua aplicação e use o seguinte código:

  
strFull        := idHttp1.Get(´http://www.meuip.com.br´);
label1.caption := Copy(strFull,Pos(´<strong class="IP">´, strFull) + 19, 12);



Espero tê-lo ajudado.

Att
Mario


GOSTEI 0
Massuda

Massuda

23/03/2007

Uma alternativa é você usar o serviço da [url=http://www.no-ip.com/]No-IP[/url], uma empresa de DNS dinamico (existem outras). Baiscamente eles te dão endereço web do tipo meunome.no-ip.org e um programa que determina qual seu IP atual para manter o servidor de DNS deles atualizado.

A vantagem é que nos programas que precisam saber seu IP, você simplesmente informa (usando o exemplo) meunome.no-ip.org, sem precisar ficar mudando isso cada vez que seu IP muda.


GOSTEI 0
Delphijean

Delphijean

23/03/2007

Segue a minha contribuição:

[b:89957f69b3]procedure[/b:89957f69b3] Form1.Button1Click(Sender: TObject);
[b:89957f69b3] Var[/b:89957f69b3]
S : [b:89957f69b3]String;[/b:89957f69b3]
WB : TWebBrowser;
[b:89957f69b3]begin[/b:89957f69b3]

[b:89957f69b3]if not [/b:89957f69b3][color=blue:89957f69b3]Pingar(edt_host.Text)[/color:89957f69b3] [b:89957f69b3]then[/b:89957f69b3]
[b:89957f69b3]raise[/b:89957f69b3]
Exception.Create(´Não Existe conecxão de Internet Ativa!´);

WB := TWebBrowser.Create(nil);
WB.Navigate(´checkip.dyndns.com´);

[b:89957f69b3]while[/b:89957f69b3] wb.ReadyState = READYSTATE_LOADING [b:89957f69b3]do[/b:89957f69b3]
Application.ProcessMessages;

Self.Update;

S := wb.OleObject.Document.documentElement.innerText;
[color=red:89957f69b3]lbl_ip_externo.Caption[/color:89957f69b3] := Copy(S, Pos(´:´, S)+2, Length(S)-Pos(´:´, S)+2);

WB.Free;
[b:89957f69b3]end;[/b:89957f69b3]

a função Pingar segue abaixo:

[b:89957f69b3]function[/b:89957f69b3] Pingar(InetAddress : string) : boolean;
[b:89957f69b3]var[/b:89957f69b3]
Handle : THandle;
InAddr : IPAddr;
DW : DWORD;
rep : array[1..128] of byte;
[b:89957f69b3]begin[/b:89957f69b3]
result := false;
Handle := IcmpCreateFile;

[b:89957f69b3]if [/b:89957f69b3]Handle = INVALID_HANDLE_VALUE [b:89957f69b3]then[/b:89957f69b3]
Exit;

TranslateStringToTInAddr(InetAddress, InAddr);
DW := IcmpSendEcho(Handle, InAddr, nil, 0, nil, @rep, 128, 0);

Result := (DW <> 0);
IcmpCloseHandle(Handle);
[b:89957f69b3]end;[/b:89957f69b3]


GOSTEI 0
Vcl.net

Vcl.net

23/03/2007

function GetIP(Machine: String = ´´): String;
var
Host: IPHostEntry;
begin
if Machine = ´´ then
Host := Dns.GetHostByName(Dns.GetHostName);
try
Host := Dns.GetHostByName(Machine);
result := Host.AddressList[0].ToString;
except
end;
end;

Detalhe, isso eu estou usando em .NET, então não sei se vai funcionar com vc se estiver usando win32 amigo...


GOSTEI 0
POSTAR