Wie, um Festzustellen, Internet-Netzwerk-Interface in Java

Wie bestimmen Sie die Netzwerkschnittstelle mit dem internet verbunden ist, die mit Java? Zum Beispiel, ich Lauf

InetAddress.getLocalHost().getHostAddress();

und innerhalb von Eclipse dieser liefert genau das, was ich beabsichtige, 192.168.1.105. Allerdings, wenn ich dieses Paket in einer jar-Datei und führen Sie das Programm, den code gibt 169.254.234.50. In diesen suchen, fand ich dies ist die IP-Adresse eines VMware Virtual Ethernet Adapter-Schnittstelle auf meinem Rechner.

Gibt es eine Möglichkeit, um zu bestimmen, die Schnittstelle mit dem internet verbunden, aber zur gleichen Zeit zu halten Portabilität für meinen code?

Vergleich von Schnittstellen

- Schnittstelle [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

- Schnittstelle [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

Gibt es eine Dritte VMware-Schnittstelle mit site local=true und link-local=false, so dass die Felder nicht helfen.

Sind Sie das GLAS im inneren einer VM? Die VM ist in Ihrem eigenen Umfeld, mit seinen eigenen Netzwerk-Schnittstelle, die ist, was Java gibt.
Nein, das ist auf einem Windows 7-Maschine. Ich habe VMWare installiert aber, und ich glaube, dies ist die Schnittstelle, die es verwendet für die Kommunikation mit der VM. Ich bin mir nicht sicher, warum Java wählt diese Schnittstelle als Standard. Dieses Verhalten ist identisch auf meine Mitbewohner computer (Windows 7, VMWare installiert)
Bitte siehe meine aktualisierte Antwort. Der code, den ich gepostet habe, nur druckt mein reales Netzwerk-interface, während ich habe Virtual Box das Netzwerk installiert und aktiviert ist.

InformationsquelleAutor Cavyn VonDeylen | 2011-12-11

Schreibe einen Kommentar