【问题标题】:InetAddress.getLocalHost().getHostName() throws UnknownHostExceptionInetAddress.getLocalHost().getHostName() 抛出 UnknownHostException
【发布时间】:2015-07-14 13:40:53
【问题描述】:

我正在尝试从运行它的服务器上获取主机名。

Java 代码:

import java.net.InetAddress; 
System.out.println("Host Name: " + InetAddress.getLocalHost().getHostName());
System.exit(0);

输出:

java.net.UnknownHostException: ThinkPad-Edge-E430: ThinkPad-Edge-E430: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
at MailQ.main(MailQ.java:45)
Caused by: java.net.UnknownHostException: ThinkPad-Edge-E430: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
... 1 more

主持人:

127.0.0.1   localhost #admin.local.com
#127.0.1.1  ThinkPad-Edge-E430
192.168.81.238 admin.local.com
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

我在这里找不到问题所在。有人能帮帮我吗?

【问题讨论】:

标签: java localhost


【解决方案1】:

你可以检查一下:-

System.getProperty("os.name");

然后为该操作系统使用正确的环境变量,即

Windows

System.getenv("COMPUTERNAME");

Linux

System.getenv("HOSTNAME");

这种方法的问题在于,当您开始在不太常见的操作系统上运行时,您可能需要挖掘环境变量。

关于它失败的原因,我相信通过查看这篇文章可能会找到你的答案:-

Recommended way to get hostname in Java

任何通过这样的 IP 地址来确定主机名的尝试

InetAddress.getLocalHost().getHostName()

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

【讨论】:

    【解决方案2】:

    试试这个:

    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    /**
     * @author Crunchify.com
     */
    
    public class CrunchifyGetIPHostname {
    
        public static void main(String[] args) {
    
            InetAddress ip;
            String hostname;
            try {
                ip = InetAddress.getLocalHost();
                hostname = ip.getHostName();
                System.out.println("Your current IP address : " + ip);
                System.out.println("Your current Hostname : " + hostname);
    
            } catch (UnknownHostException e) {
    
                e.printStackTrace();
            }
        }
    }
    

    您在 http://www.browxy.com/ 上在线测试此代码

    我是从http://crunchify.com/how-to-get-server-ip-address-and-hostname-in-java/那里拿的

    【讨论】:

    • 我可能遗漏了一些东西,但这段代码似乎与 OP 的代码相同。唯一的区别是这段代码捕获了异常。但问题仍然存在。
    猜你喜欢
    • 2010-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2023-03-18
    相关资源
    最近更新 更多