Obter IP local no Linux corretamente

05/01/2005

0

Ola para todos...

Estou desenvolvendo uma aplicação Multiplataforma... e nela preciso saber o IP local que a estação está... geralmente esse IP é atribuido por algum servidor DHCP da rede...

Tentei usando os seguintes componentes:

IP := IdIPWatch1.LocalIP ; { IdIPWatch }

ou

IP := TcpServer1.LocalHostAddr ; { TcpServer }

Ambos funcionam bem no Windows mas no Linux sempre retornam 127.0.0.1

Alguma sugestão ?


Dopi

Dopi

Responder

Posts

11/01/2005

Dopi

Procurei tanto... e a solução estava bem perto...

A muito tempo uso no projeto ACBr a classe SynaSer para acesso a serial em Windows/Linux... o mesmo autor da SynaSer também desenvolveu o projeto Synapse ( Synchronous TCP/IP Library for Delphi, C++ Builder, Kylix and FreePascal ) http://www.ararat.cz/synapse/

Usando o TBlockSocket consegui acessar corretamente o IP da máquina no Windows e Linux...
procedure TForm1.Button1Click(Sender: TObject);
Var blsock : TBlockSocket ;
    IPs : TStringList ;
    I : Integer ;
begin
  blsock := TBlockSocket.create ;
  IPs := TStringList.Create ;
  IPs.Clear ;

  blsock.ResolveNameToIP(blsock.LocalName,IPs) ;
  Label1.Caption := ´Localname: ´+blsock.LocalName+sLineBreak+
               ´IPs: ´+sLineBreak ;
  For I := 0 to IPs.Count-1 do
     Label1.Caption := Label1.Caption + IPs[I] + sLineBreak ;
end;


A procedure TBlockSocket.ResolveNameToIP consegue inclusive capturar o IP dinâmico atribuido por uma conexão DialUp / Speed...


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar