加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:20:22 所属栏目:Java 来源:网络整理
导读:我已经得到机器的主机名,如下所示: InetAddress.getLocalHost().getHostName(); 但是,当我安装最新的JDK(jdk1.7.0_04)时,上面的代码简单地返回了LOCALHOST.我检查过/ etc / hosts(它的linux),并在那里说: 127.0.0.1 localhost redbull 升级前一直返回REDBU
我已经得到机器的主机名,如下所示:
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记录.相反,转到首选项将使您得到由用户确定的稳定的主机名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读