Fórum Ip externo (internet) #339195

23/03/2007

0

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

Responder

Posts

23/03/2007

Aldus

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


Responder

Gostei + 0

23/03/2007

Massuda

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.


Responder

Gostei + 0

24/03/2007

Delphijean

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]


Responder

Gostei + 0

27/03/2007

Vcl.net

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...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar