como Descobrir o IP da Maquina local?

Delphi

14/11/2003

Aê galera....

Seguinte:

Estou precisando receber por e-mail o ip da minha máquina, explico... eu tenho velox (banda larga) e gostaria de´entrar´ na minha máquina de casa devezenquando enquanto ainda estou no meu trabalho. Acontece que o IP do velox é dinâmico e quando c reinicia a máquina, dá logoff ou outra coisa assim, o velox cai. O que eu queria era receber um e-mail com esse numero períodicamente.
Pensei então em fazer um programinha que eu carregaria na inicialização da minha máquina em casa pra fazer isso. O que eu quero é uma forma de saber o IP da máquina em tempo de execução.

desde já agradeço


Flavio Sanches

Flavio Sanches

Curtidas 0

Respostas

Otto

Otto

14/11/2003

Caro amigo flavio,

uma das maneiras de pegar o IP local da maquina é fazer o seguinte:


antes de tudo, declare a clausula [u:48c612875d]WinSock [/u:48c612875d]na seção [b:48c612875d]Users[/b:48c612875d], depois em [b:48c612875d]private[/b:48c612875d], adicione o seguinte:

function GetIP:string;

depois

coloque a seguinte rotina no form1

function T[b:48c612875d]Form1[/b:48c612875d].GetIP:string;
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 := Name+´ ´+Format(´¬d.¬d.¬d.¬d´,
[Byte(h_addr^[0]),Byte(h_addr^[1]),
Byte(h_addr^[2]),Byte(h_addr^[3])]);
end;
WSACleanup;
end;


-------

Pronto, agora para pegar o Ip vc faz o seguinte:

adicione um label no form e no evento OnCreate do form escreva o seguinte:

label1.[b:48c612875d]caption [/b:48c612875d][color=red:48c612875d]:=[/color:48c612875d] [b:48c612875d]GetIP[/b:48c612875d];

pronto... flw...


GOSTEI 0
Flavio Sanches

Flavio Sanches

14/11/2003

valeu, mano.... Vou tentar isso


GOSTEI 0
Celo-faveri

Celo-faveri

14/11/2003

amigo...você também pode fazer o seguinte:

Antes, declare na uses o WinSock

depois adicione esta função:

function LocalIP : string; type TaPInAddr = array [0..10] of PInAddr; PaPInAddr = ^TaPInAddr; var phe : PHostEnt; pptr : PaPInAddr; Buffer : array [0..63] of char; I : Integer; GInitData : TWSADATA; begin WSAStartup($101, GInitData); Result := ´´; GetHostName(Buffer, SizeOf(Buffer)); phe :=GetHostByName(buffer); if phe = nil then Exit; pptr := PaPInAddr(Phe^.h_addr_list); I := 0; while pptr^[I] <> nil do begin result:=StrPas(inet_ntoa(pptr^[I]^)); Inc(I); end; WSACleanup; end;


como vc quer q o programa inicie automaticamente, então coloque este código em um timer:

procedure TForm1.timeIPTimer(Sender: TObject); begin Label1.Caption := LocalIP; end;


Se quiseres, pode por no OnCreate do Form.
Aí é só mandar p/ o e-mail o caption do Label.

T+ :wink:


GOSTEI 0
Rfpsatin

Rfpsatin

14/11/2003

Seguinte, deixa aproveitar a oportunidade.

Tenho um Modem ADSL [b:4102872895]router[/b:4102872895] Q bloqueia isso. COmo pego o IP do modem?

abraço


GOSTEI 0
Carlos Eduardo

Carlos Eduardo

14/11/2003

Bem Estava revirando o Fórum e cheguei aqui kkkk... achei da hora que você quer fazer mas....
uma pergunta Como Vc se conecta na maquina com esse IP? através da área remota ? sorry sou iniciante rs
GOSTEI 0
POSTAR