Boa noite. Estou usando a API Inet4Adress para pegar o IP da máquina a fim de deixar disponíveis serviços através do RMI. Porém percebi que quando estou com o modem da Vivo ativo, outras interfaces de rede são criadas e o método Inet4Address.getLocalHost().getHostAddress() retorna o IP do modem. Como faço para diferenciar a interface ativa, pois quero apenas a rede local.
…
String ip = Inet4Address.getLocalHost().getHostAddress();
System.out.println(ip);
Naming.rebind("rmi://" + ip + ":" + "1099" + "/" + servico, i);
[quote=marcelopedras]Boa noite. Estou usando a API Inet4Adress para pegar o IP da máquina a fim de deixar disponíveis serviços através do RMI. Porém percebi que quando estou com o modem da Vivo ativo, outras interfaces de rede são criadas e o método Inet4Address.getLocalHost().getHostAddress() retorna o IP do modem. Como faço para diferenciar a interface ativa, pois quero apenas a rede local.
…
String ip = Inet4Address.getLocalHost().getHostAddress();
System.out.println(ip);
Naming.rebind("rmi://" + ip + ":" + "1099" + "/" + servico, i);
…
Saída:
177.27.27.232
apesar da rede ethernet local ser 1.1.1.1[/quote]
Pelo que entendo o problema é na Placa que é detectada… não estou muito familiarizado com essa API mas tente ir ao Painel de controle (Caso use Windows)
e tente trocar o adaptador de rede Default (Nesse caso talvez do Modem) pelo da companhia…
tens documentação do API? se tiveres podes me enviar a documentação e o API e posso tentar dar uma analisada e depois te responder.
Boa tarde. Ontem mesmo achei uma solução possível: usar a API NetworkInterface para visualizar as interfaces disponíveis e então escolher a de interesse.
O código ficou assim:
…
String ip = Inet4Address.getLocalHost().getHostAddress(); //seta o ip com o endereço da primeira interface (caminho infeliz)
String nomehost = Inet4Address.getLocalHost().getHostName(); //pega o nome do host
for(InetAddress inet: InetAddress.getAllByName(nomehost)) //captura todos os endereços disponíveis de todas as interfaces
{
if(NetworkInterface.getByInetAddress(inet).getName().startsWith(“eth”)) //pega o nome da interface em que está setado o endereço da vez e verifica
//o nome da interface
{
ip = inet.getHostAddress(); //caso seja a de interesse, seta ip e pára
break;
}
}