[Resolvido] pegar os IPs de maq. com multiplas conexões de rede
7 respostas
sf.marcius
olá pessoal.
me deparei com um problema em que preciso saber o ip da máquina que está rodando minha app, mas esta máquina pode possuir várias conexoes de rede.
deste modo, InetAddress.getLocalHost().getHostAddress() não está funcionando pq esta linha está retornando somente um dos IPs.
Ja pesquisei no forum e não achei nada neste sentido.
existe algum meio de se obter todos os ips de uma máquina com múltiplas placas de rede conectadas a múltiplas lans?
importjava.net.*;classGetAllByName{publicstaticvoidmain(String[]args)throwsUnknownHostException{// Imprime apenas "localhost/127.0.0.1"for(InetAddressia:InetAddress.getAllByName("localhost")){System.out.println(ia);}// Deve imprimir todos os endereços do host local. for(InetAddressia:InetAddress.getAllByName(InetAddress.getLocalHost().getHostName())){System.out.println(ia);}}}
sf.marcius
valeu aí cara, mas nao está funcionando.
o código:
// Deve imprimir todos os endereços do host local. for(InetAddressia:InetAddress.getAllByName(InetAddress.getLocalHost().getHostName())){System.out.println(ia);}
está retornando:
Marcius-PC/127.0.1.1
Obs: meu SO é o Ubuntu 9.04
o q será que pode ser?
T
thingol
De fato, em máquinas Linux “InetAddress.getLocalHost().getHostName()” realmente retorna o nome correto, mas ele mapeia sempre para 127.0.0.1.
Use o programa a seguir.
importjava.net.*;importjava.util.*;classGetAllByName{publicstaticvoidmain(String[]args)throwsUnknownHostException,SocketException{// Imprime apenas "localhost/127.0.0.1"for(InetAddressia:InetAddress.getAllByName("localhost")){System.out.println(ia);}System.out.println();// Deve imprimir todos os endereços do host local.for(InetAddressia:InetAddress.getAllByName(InetAddress.getLocalHost().getHostName())){System.out.println(ia);}System.out.println();// No caso de uma máquina Linux, é necessário listar as interfaces de rede. Normalmente a primeira placa de rede é eth0,// mas em uma máquina Solaris as interfaces de rede têm nomes diferentes e relacionados com o driver usado.for(NetworkInterfaceni:Collections.list(NetworkInterface.getNetworkInterfaces())){System.out.println("Interface de rede: "+ni.getName()+" ("+ni.getDisplayName()+")");System.out.println("Endereços de rede associados à interface "+ni.getName()+":");for(InetAddressia:Collections.list(ni.getInetAddresses())){System.out.println(ia);};System.out.println();}}}
sf.marcius
opa!
valeu aeh Thingol. worked like a charm!
só uma dúvida… esse último código funciona em windows também ou eu terei que fazer uma lógica que detecte o SO e apartir deste faça o procedimento correto?
[]s
T
thingol
Testei em Windows; estava esperando você me dizer que estava funcionando no Ubuntu.
sf.marcius
blz
brigadão aeh cara!
alguém com super poderes aeh, marque este tópico como resolvido
feito!
T
thingol
Quem tem superpoderes é você mesmo. Edite seu primeiro tópico e mude o título para “Pegar os IPs de maq. com multiplas conexões de rede [resolvido]”