首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >InetAddress.getLocalHost().getHostName()抛出UnknownHostException

InetAddress.getLocalHost().getHostName()抛出UnknownHostException
EN

Stack Overflow用户
提问于 2015-07-14 13:40:53
回答 3查看 8.9K关注 0票数 2

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

Java代码:

代码语言:javascript
复制
import java.net.InetAddress; 
System.out.println("Host Name: " + InetAddress.getLocalHost().getHostName());
System.exit(0);

输出:

代码语言:javascript
复制
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

东道主:

代码语言:javascript
复制
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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-14 13:50:51

试试这个:

代码语言:javascript
复制
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/那里拿来的

票数 -1
EN

Stack Overflow用户

发布于 2015-07-14 13:48:11

你可以检查一下:-

代码语言:javascript
复制
System.getProperty("os.name");

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

Windows

代码语言:javascript
复制
System.getenv("COMPUTERNAME");

Linux

代码语言:javascript
复制
System.getenv("HOSTNAME");

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

由于失败的原因,我相信你的答案可能是从这篇文章中找到的:-

Recommended way to get hostname in Java

通过如下IP地址确定主机名的任何尝试 InetAddress.getLocalHost().getHostName() 在某些情况下肯定会失败:

票数 1
EN

Stack Overflow用户

发布于 2022-10-21 12:28:20

这有点旧,但似乎没有人注意到您在主机文件中注释掉了ThinkPad-Edge-E430的条目。它还在ip地址中输入了一个错误。

更改:

代码语言:javascript
复制
#127.0.1.1  ThinkPad-Edge-E430

至:

代码语言:javascript
复制
127.0.0.1  ThinkPad-Edge-E430

你应该没事的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31408368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档