Obter IP local no Linux corretamente
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 ?
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
Curtidas 0
Respostas
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...
A procedure TBlockSocket.ResolveNameToIP consegue inclusive capturar o IP dinâmico atribuido por uma conexão DialUp / Speed...
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