对于所有Java专家,我有以下问题。
我正试图想出一种可靠的方法来创建一个localHost InetAddress对象,作为InetAddress.getLocalHost()的后盾。
我所面对的问题如下:
在某些情况下,我的UnknownHostException应用程序由于抛出一个而无法启动,以防它运行的机器的网络连接中断(部署在Windows机器上)。
因此,到目前为止,我的想法如下:
1)要么尝试从localHost枚举中获取InetAddress对象(我发现这有点麻烦)。
2)尝试通过系统环境获取本地主机名字符串,然后尝试通过执行InetAddress创建InetAddress.getByName()对象。
我强烈支持第二种方法,因为它更容易,而且看起来更时髦,但我仍然会遇到一些问题,以获得我想要的InetAddress对象,以防网络连接中断。
现在我的问题有两个:
1)考虑到我在所述机器中维护了一个主机文件,其中包含该机器的条目(主机名- IP地址),那么#2不可能按预期工作吗?我知道最终DNS解析将归结到实际操作系统上,但是Windows不应该使用它们的主机文件来完成这个任务,即使没有可用的网络连接。
2)是否有任何方法可以创建一个InetAddress对象,给定一个主机的主机名,但这台机器没有一个活动的网络连接接口被关闭(从而避免了前面提到的UnkownHostException )?
发布于 2017-06-09 15:48:52
( 1)它将按预期工作,但条件是:
另一种方法是使用回送地址(例如"localhost“/ 127.0.0.1)
2)当然。使用[InetAddress.getByAddress(String, byte[])](https://docs.oracle.com/javase/7/docs/api/java/net/InetAddress.html#getByAddress(java.lang.String,%20byte[]%29).请注意,在DNS中没有选中该名称。
https://stackoverflow.com/questions/44461733
复制相似问题