我需要使用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