java 获取主机名_建议在Java中获取主机名的方法

问题

以下哪项是获取Java当前计算机主机名的最佳和最便携的方法?

Runtime.getRuntime().exec("hostname")

VS

InetAddress.getLocalHost().getHostName()

#1 热门回答(289 赞)

严格来说 - 你别无选择,只能在Unixgethostname(2)上调用hostname(1)或者。这是你的计算机的名称。任何通过IP地址确定主机名的尝试都是这样的

InetAddress.getLocalHost().getHostName()

在某些情况下必然会失败:

IP地址可能无法解析为任何名称。错误的DNS设置,糟糕的系统设置或错误的提供商设置可能是这个原因。

DNS中的名称可以有许多名为CNAME的别名。这些只能在一个方向上正确解决:名称到地址。反方向是模棱两可的。哪一个是"官方"名称?

主机可以有许多不同的IP地址 - 每个地址可以有许多不同的名称。两种常见情况是:一个以太网端口有几个"逻辑"IP地址,或者计算机有几个以太网端口。它是可配置的,无论它们共享IP还是具有不同的IP。这被称为"多宿主"。

DNS中的一个名称可以解析为多个IP地址。并非所有这些地址都必须位于同一台计算机上! (用例:一种简单的负载均衡形式)

我们甚至不开始讨论动态IP地址。

另外,请勿将IP地址的名称与主机名(主机名)混淆。一个比喻可能会让它更清晰:

有一个叫做"伦敦"的大城市(服务器)。在城墙里面发生了很多事情。这个城市有几个门(IP地址)。每个门都有一个名称("北门","河门"

你可能感兴趣的:(java,获取主机名)