Как определить, какой сетевой интерфейс подключен к Интернету с помощью Java?Например, я запускаю
InetAddress.getLocalHost().getHostAddress();
и в Eclipse это возвращает именно то, что я намереваюсь, 192.168.1.105.Однако, если я упакую это в файл jar и запустлю программу, код вернет 169.254.234.50.Глядя на это, я обнаружил, что это IP-адрес интерфейса виртуального адаптера Ethernet VMware на моей машине.
Есть ли способ определить интерфейс, подключенный к Интернету, но в то же время сохранить мобильность для моегокод?
Сравнение интерфейсов
Интерфейс [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
Интерфейс [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
Существует третий интерфейс VMware с узлом local = true и ссылкой local = false, поэтому эти поля также не помогут.