如何確定使用Java將哪個網絡接口連接到互聯網?例如,我運行如何確定Java中的Internet網絡接口
InetAddress.getLocalHost().getHostAddress();
並且在Eclipse中,這返回了我想要的,192.168.1.105。但是,如果我將它打包成jar文件並運行該程序,代碼將返回169.254.234.50。看着這個,我發現這是我的機器上的VMware虛擬以太網適配器接口的IP地址。
有什麼辦法可以確定連接到互聯網的接口,但同時保持我的代碼的可移植性?接口的
比較
接口[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接口本地=真和link local = false,所以這些字段不是'也沒有任何幫助。
你運行一個虛擬機內部的JAR(可以用二進制邏輯進行優化)的VM是它自己的環境,擁有自己的網絡接口,這是什麼? Java返回什麼結果 – blackcompe
N o,這是在Windows 7機器上。然而,我安裝了VMWare,我相信這是它用來與虛擬機進行通信的接口。我不確定爲什麼Java選擇這個接口作爲默認值。這種行爲是在我的室友計算機(Windows 7,VMWare安裝)相同 –
@CavynVonDeylen請看我更新的答案。我發佈的代碼只打印出我真實的網絡界面,而我已經安裝並啓用了Virtual Box的網絡。 –