【发布时间】:2017-11-11 16:54:06
【问题描述】:
我对所有 Java 专家提出以下问题。
我试图想出一种可靠的方法来创建 localHost InetAddress 对象作为InetAddress.getLocalHost() 的后备方法。
我面临以下问题:
在某些情况下,我的 Java 应用程序由于抛出 UnknownHostException 而无法启动,以防运行它的机器的网络连接中断(部署在 Windows 机器上)。
所以到目前为止我的想法如下:
1) 尝试从 NetworkInterfaces 枚举中获取 localHost InetAddress 对象(我发现这有点麻烦)。
2) 尝试通过 System 环境获取本地主机名字符串,然后尝试通过 InetAddress.getByName() 创建 InetAddress 对象。
我强烈赞成第二种方法,因为它更容易并且看起来更时尚,但是在获取所需的 InetAddress 对象时仍然遇到问题,以防网络连接中断。
现在我的问题有两个:
1) 鉴于我在上述机器中维护了一个 hosts 文件,其中包含机器的条目(主机名 - IP 地址),#2 是否无法按预期工作?我知道最终 DNS 解析将归结为实际的操作系统,但即使没有可用的网络连接,Windows 也不应该能够使用它们的主机文件来执行此操作。
2) 有没有办法在给定机器主机名的情况下创建 InetAddress 对象,但该机器没有活动的网络连接 - 接口关闭(从而避免前面提到的 UnkownHostException)?
【问题讨论】:
标签: java dns inetaddress