我需要使用Java從Ubuntu獲取計算機IP。我嘗試了InetAddress.getLocalHost.getHostAddress().toString();
,但它返回127.0.0.1
。我正在尋找解決方案,發現此代碼:使用Java在UNIX上獲取計算機IP的安全方法
NetworkInterface ni = NetworkInterface.getByName("eth0");
Enumeration<InetAddress> inetAddresses = ni.getInetAddresses();
while(inetAddresses.hasMoreElements()) {
InetAddress ia = inetAddresses.nextElement();
if(!ia.isLinkLocalAddress()) {
System.out.println("IP: " + ia.getHostAddress());
}
}
}
此代碼爲我工作,但是當計算機使用「eth1的」接口或計算機可以使用無線適配器連接到網絡(爲wlan0)問題。在這種情況下,計劃將失敗。你們可以用安全的方法來建議我從UNIX系統獲取IP嗎?問候。
通過「安全」,你的意思是'可靠'而不是'危險'的相反,對吧? – Gabe
是的。我的意思是適用於所有UNIX系統的方法。如果機器使用除「eth0」之外的其他接口,則我的方法非常危險對於窗口InetAddress.getLocalHost.getHostAddress()。toString()正在工作。 – user2496520
如果計算機在家用無線防火牆/路由器後面使用,該怎麼辦?這些路由器通常爲家中的計算機分配類似192.168.1.x的地址 - 並複用分配給家庭的實際互聯網地址。如果允許傳入並由防火牆路由,則計算機的地址(192.168.1.101)可能不是可以在互聯網上聯繫計算機的地址(32.78.23.4)。 – Paul