String hostAddress = InetAddress.getLocalHost().getHostAddress();
上述代码在Java 1.7和1.6上的工作方式不同。在1.6中,它返回分配给系统的正确IP(10.4 ...)。在1.7中,它返回127.0.0.1。为什么InetAddress.getLocalHost()在Java 1.7中表现不同?
要解决此问题,我必须使用NetworkInterface.getNetworkInterfaces()
并从中获取InetAddress
。我会尝试连接到每个可用的InetAddress
,直到成功。这很好,但我想知道为什么Java 1.7的行为不同?
任何帮助将是伟大的。
在我的Ubuntu中,与OpenJDK的1.6.0_27,甲骨文的Java 1.6.0_33和OpenJDK的1.7.0_15这个返回127.0.1.1 – 2013-03-22 09:35:28