以下哪种方法是用Java获取当前计算机的主机名的最佳,最便捷的方法?
Runtime.getRuntime().exec("hostname")
与
InetAddress.getLocalHost().getHostName()
严格来说- hostname(1)在Unix 上,你别无选择,只能调用或gethostname(2)。这是你的计算机的名称。任何通过这样的IP地址来确定主机名的尝试
hostname(1)
gethostname(2)
在某些情况下注定会失败:
另外,请勿将IP地址的名称与主机名(主机名)混淆。隐喻可能更清楚:
有一个大城市(服务器),称为“伦敦”。在城墙内,发生了很多生意。这个城市有几个门(IP地址)。每个闸门都有一个名称(“北闸门”,“河闸门”,“南安普敦闸门” …),但是闸门的名称不是城市的名称。同样,你无法通过使用大门的名称来推断城市的名称-“北门”将覆盖一半的较大城市,而不仅仅是一个城市。但是-一个陌生人(IP数据包)沿着河边走,问当地人:“我有一个陌生的地址:’河门,左第二,第三宫’。你能帮我吗?” 当地人说:“当然,你在正确的道路上,只需继续前进,你将在半小时内到达目的地。”
我认为这几乎说明了这一点。
好消息是:通常不需要真实的主机名。在大多数情况下,任何解析为该主机上IP地址的名称都可以。(陌生人可能会通过Northgate进入这座城市,但乐于助人的当地人会翻译“第二左”部分。)
如果还有其他情况,则必须使用此配置设置的确定来源-C函数gethostname(2)。该函数也由程序调用hostname。
hostname