Fórum Ip externo (internet) #339195
23/03/2007
0
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
Curtir tópico
+ 0Posts
23/03/2007
Aldus
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
23/03/2007
Massuda
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
24/03/2007
Delphijean
[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
27/03/2007
Vcl.net
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
Clique aqui para fazer login e interagir na Comunidade :)