Ip externo (internet)
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
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
Curtidas 0
Respostas
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:
Espero tê-lo ajudado.
Att
Mario
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
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.
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
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]
[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
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...
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