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?
agradeço desde já.
getAllByName
import java.net.*;
class GetAllByName {
public static void main(String[] args) throws UnknownHostException {
// Imprime apenas "localhost/127.0.0.1"
for (InetAddress ia : InetAddress.getAllByName ("localhost")) {
System.out.println (ia);
}
// Deve imprimir todos os endereços do host local.
for (InetAddress ia : InetAddress.getAllByName (InetAddress.getLocalHost().getHostName())) {
System.out.println (ia);
}
}
}
valeu aí cara, mas nao está funcionando.
o código:
// Deve imprimir todos os endereços do host local.
for (InetAddress ia : 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?
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.
import java.net.*;
import java.util.*;
class GetAllByName {
public static void main(String[] args) throws UnknownHostException, SocketException {
// Imprime apenas "localhost/127.0.0.1"
for (InetAddress ia : InetAddress.getAllByName ("localhost")) {
System.out.println (ia);
}
System.out.println();
// Deve imprimir todos os endereços do host local.
for (InetAddress ia : 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 (NetworkInterface ni : 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 (InetAddress ia : Collections.list (ni.getInetAddresses())) {
System.out.println (ia);
};
System.out.println();
}
}
}
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
Testei em Windows; estava esperando você me dizer que estava funcionando no Ubuntu.
blz
brigadão aeh cara!
alguém com super poderes aeh, marque este tópico como resolvido
feito!
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]”