在最新的jdk7中,使用java失败的主机名失败

前端之家收集整理的这篇文章主要介绍了在最新的jdk7中,使用java失败的主机名失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经得到机器的主机名,如下所示:
InetAddress.getLocalHost().getHostName();

但是,当我安装最新的JDK(jdk1.7.0_04)时,上面的代码简单地返回了LOCALHOST.我检查过/ etc / hosts(它的linux),并在那里说:

127.0.0.1    localhost    redbull

升级前一直返回REDBULL.所以我改变了这一点

127.0.0.1    redbull    localhost

相反,它开始返回REDBULL没有问题.

有没有更好的方式来做这项工作?

解决方法

嗯,我想到把这个标记为dup,但是我发现唯一的答案是建议你使用InetAddress.getLocalHost().getHostName().坦白说,在这种情况下,我认为应该返回“localhost”.而我认为这些答案是正确的,因为真的没有纯Java的方式来做(至少没有一个可移植回旧的JRE).

我们使用JNI来实现这一点.我们在Mac OS 10.4,SCDynamicStoreCopyLocalHostName()在老的Mac OS,Win32上的GetComputerName(),gethostname()其他地方调用SCPreferencesGetHostName().

当然,您可以在Unix机器上简单地调用/ bin / hostname,或者在Windows上查看环境变量COMPUTERNAME.您是否觉得更好地调用JNI或执行另一个程序,这是一个判断调用.

对于什么是值得的,我们在Mac OS上不调用gethostname()的原因是因为Mac执行了一个奇怪的动态主机名,其中gethostname()将返回主要以太网设备的反向DNS.如果我把Mac直接插入我的电缆调制解调器,我会得到一个客户10-42-21-42的主机名,或者我的有线电视提供商决定在其DNS中设置我的PTR记录.相反,转到首选项将使您得到由用户确定的稳定的主机名.

猜你在找的Java相关文章