¿Cómo se determina qué interfaz de red está conectada a Internet utilizando Java? Por ejemplo, corroCómo determinar la interfaz de red de Internet en Java
InetAddress.getLocalHost().getHostAddress();
y dentro de Eclipse Esto devuelve exactamente lo que pretendo, 192.168.1.105. Sin embargo, si empaqueté esto en un archivo jar y ejecuté el programa, el código devuelve 169.254.234.50. Al analizar esto, descubrí que esta es la dirección IP de una interfaz del Adaptador Virtual Ethernet de VMware en mi máquina.
¿Hay alguna manera de determinar la interfaz conectada a Internet, pero al mismo tiempo mantener la portabilidad de mi código?
Comparación de Interfaces
Interface [net4]
display name : Intel(R) Centrino(R) Ultimate-N 6300 AGN
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 24 D7 2C 5F 70
INET address (IPv4): 192.168.1.105
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : true
any local : false
link local : false
multicast : false
reachable : true
Interface [eth5]
display name : VMware Virtual Ethernet Adapter for VMnet1
MTU : 1500
loopback : false
point to point: false
up : true
virtual : false
multicast : true
HW address : 00 50 56 C0 00 01
INET address (IPv4): 169.254.234.50
host name : MyComputer
canonical host name : MyComputer
loopback : false
site local : false
any local : false
link local : true
multicast : false
reachable : true
Hay una tercera interfaz de VMware con sitio local = true y enlace local = falso, entonces esos campos aren ' También ayuda.
¿está ejecutando el archivo JAR dentro de una máquina virtual de la máquina virtual es su propio entorno, con su propia interfaz de red, que es? lo que devuelve Java. – blackcompe
N o, esto está en una máquina con Windows 7. Sin embargo, tengo VMWare instalado y creo que esta es la interfaz que usa para comunicarse con la máquina virtual. No estoy seguro de por qué Java elige esta interfaz como la predeterminada. Este comportamiento es idéntico en la computadora de mi compañero de cuarto (Windows 7, VMWare instalado) –
@CavynVonDeylen Consulte mi respuesta actualizada. El código que publiqué solo imprime mi interfaz de red real, mientras tengo la red de Virtual Box instalada y habilitada. –