Obter IP local no Linux corretamente

Delphi

05/01/2005

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

Curtidas 0

Respostas

Dopi

Dopi

05/01/2005

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


GOSTEI 0
POSTAR