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