Java地址名称解析

Java地址名称解析,java,dns,inetaddress,Java,Dns,Inetaddress,我向所有Java专家提出以下问题 我试图找到一种可靠的方法来创建localHost InetAddress对象,作为InetAddress.getLocalHost()的后备方法 我面临以下问题: 在某些情况下,如果运行Java应用程序的计算机的网络连接断开(部署在Windows计算机上),则会引发未知的HostException,从而导致Java应用程序无法启动 到目前为止,我的想法如下: 1) 或者尝试从NetworkInterfaces枚举获取localHost InetAddress对象

我向所有Java专家提出以下问题

我试图找到一种可靠的方法来创建localHost InetAddress对象,作为
InetAddress.getLocalHost()
的后备方法

我面临以下问题:

在某些情况下,如果运行Java应用程序的计算机的网络连接断开(部署在Windows计算机上),则会引发未知的HostException,从而导致Java应用程序无法启动

到目前为止,我的想法如下:

1) 或者尝试从NetworkInterfaces枚举获取localHost InetAddress对象(我发现这有点麻烦)

2) 尝试通过系统环境获取本地主机名字符串,然后尝试通过执行
InetAddress.getByName()
创建InetAddress对象

我强烈支持第二种方法,因为它更简单,看起来更圆滑,但在获取所需的InetAddress对象时仍然会遇到问题,以防网络连接中断

现在我的问题有两个:

1) 鉴于我在上述机器中维护了一个hosts文件,该文件包含机器的条目(主机名-IP地址),那么#2是否可能按预期工作?我知道最终DNS解析将取决于实际的操作系统,但即使没有可用的网络连接,Windows也不能使用其主机文件来完成此操作

2) 是否有任何方法可以在给定机器主机名的情况下创建InetAddress对象,但该机器没有活动的网络连接-接口处于关闭状态(从而避免前面提到的UnknownHostException)?

1)如果:

  • 本地DNS解析程序配置为在外部DNS服务器之前检查“主机”文件,以及

  • 该条目是正确的,它引用了本地主机的工作IP地址

另一种方法是使用环回地址(例如“localhost”/127.0.0.1)

2) 当然。使用。请注意,DNS中未签入该名称