【问题标题】:which is better between getting hostname using InetAddress or System.getenv使用 InetAddress 或 System.getenv 获取主机名哪个更好
【发布时间】:2016-07-28 15:31:54
【问题描述】:

我发布了一个关于 java 8 中的 inetaddress 问题的问题:InetAddress java 8 is not getting the hostname

但是我找到了一个简单的解决方案,使用 System.getenv("HOSTNAME") 而不是 InetAddress.getLocalHost().getHostName()...

我想知道使用获取主机名有什么区别:

InetAddress.getLocalHost().getHostName();

System.getenv("HOSTNAME")

有什么影响吗?哪个更好?

【问题讨论】:

  • 你可能不应该依赖系统环境变量
  • 如果您关心兼容性,请知道HOSTNAME 在 Windows 上不存在。但主要问题是:你为什么需要它?一台机器可以托管许多域,那么您需要这个名称是什么?
  • 不只是 Windows,但不能保证它会在 Linux 上设置。首先,它不是 POSIX 必需的环境变量,某些发行版可能会选择不使用它或停止使用它。其次,根据进程的启动方式,它不一定会将所有环境变量都向前导出。
  • 看来你应该阅读这个答案,以及这篇文章中的其他人。 stackoverflow.com/a/15197702/2308683

标签: java java-8 system inetaddress getenv


【解决方案1】:

在大多数系统中,它们应该返回相同的值。但是,System.getenv() 依赖于系统的环境变量。

【讨论】:

    【解决方案2】:

    System.getenv("HOSTNAME") 最适合您,因为它会提供您所期望的准确值,因为它来自环境变量。

    InetAddress.getLocalHost().getHostName() 它将给出可以在许多不同主机名下知道的主机名。 阅读更多 Recommended way to get hostname in Java

    【讨论】:

      猜你喜欢
      • 2016-12-02
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      相关资源
      最近更新 更多