当前位置: 首页 > 面试题库 >

在Java中获取主机名的推荐方法

公西鸿博
2023-03-14
问题内容

以下哪种方法是用Java获取当前计算机的主机名的最佳,最便捷的方法?

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

InetAddress.getLocalHost().getHostName()

问题答案:

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

InetAddress.getLocalHost().getHostName()

在某些情况下注定会失败:

  • IP地址可能无法解析为任何名称。错误的DNS设置,错误的系统设置或错误的提供程序设置可能是造成此问题的原因。
  • DNS中的名称可以具有许多称为CNAME的别名。这些只能在一个方向上正确解决:从名称到地址。相反的方向是模棱两可的。“正式”名称是哪一个?
  • 主机可以有许多不同的IP地址-每个地址可以有许多不同的名称。两种常见情况是:一个以太网端口具有多个“逻辑” IP地址,或者计算机具有多个以太网端口。它们是共享IP还是具有不同IP,这是可配置的。这称为“多宿主”。
  • DNS中的一个名称可以解析为多个IP地址。并非所有这些地址都必须位于同一台计算机上!(用例:负载均衡的一种简单形式)
  • 我们甚至不要开始谈论动态IP地址。

另外,请勿将IP地址的名称与主机名(主机名)混淆。隐喻可能更清楚:

有一个大城市(服务器),称为“伦敦”。在城墙内,发生了很多生意。这个城市有几个门(IP地址)。每个闸门都有一个名称(“北闸门”,“河闸门”,“南安普敦闸门” …),但是闸门的名称不是城市的名称。同样,你无法通过使用大门的名称来推断城市的名称-“北门”将覆盖一半的较大城市,而不仅仅是一个城市。但是-一个陌生人(IP数据包)沿着河边走,问当地人:“我有一个陌生的地址:’河门,左第二,第三宫’。你能帮我吗?” 当地人说:“当然,你在正确的道路上,只需继续前进,你将在半小时内到达目的地。”

我认为这几乎说明了这一点。

好消息是:通常不需要真实的主机名。在大多数情况下,任何解析为该主机上IP地址的名称都可以。(陌生人可能会通过Northgate进入这座城市,但乐于助人的当地人会翻译“第二左”部分。)

如果还有其他情况,则必须使用此配置设置的确定来源-C函数gethostname(2)。该函数也由程序调用hostname



 类似资料:
  • 本文向大家介绍java反射之获取类的信息方法(推荐),包括了java反射之获取类的信息方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 本文接上文“老生常谈反射之Class类的使用(必看篇)”,以编写一个用来获取类的信息(成员函数、成员变量、构造函数)的工具类来讲解"反射之获取类的信息" 1、获取成员函数信息 2、获取成员变量信息 3、获取构造函数信息 4、工具类代码 以上这篇java反射之获

  • 问题内容: 是否可以在Node.js中获取 主机名 ? 这是我获取客户IP的方式: 那么,如何获得客户的主机名? 谢谢您的回复! 问题答案: 我认为唯一的方法是这样的: 但我建议您实际上并不需要它,这并不是您可以对信息做任何有用的事情。如果您只想让字符串标识用户的计算机,则可以进行一些处理。 如果您真正想要的是FQDN,那么我建议它仍然对您没有太大帮助,但为此您需要反向DNS查找。如果您使用的是V

  • 问题内容: 有没有逃脱推荐的方式,和字符时输出中普通的代码?(也就是说,除了手动执行以下操作之外)。 问题答案: 来自的: 对于版本3:

  • 本文向大家介绍xcode中获取js文件的路径方法(推荐),包括了xcode中获取js文件的路径方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"click" ofType:@"js"]; 理论上这样是应该能获取click.js的路径的,但是返回的确是null。 解决方法是

  • 本文向大家介绍php中获取主机名、协议及IP地址的方法,包括了php中获取主机名、协议及IP地址的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中获取主机名、协议及IP地址的方法。分享给大家供大家参考。 具体实现代码如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍浅谈Java中的hashcode方法(推荐),包括了浅谈Java中的hashcode方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法: 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。