使用Java如何获取系统IP?

3

我试图创建一个包含按钮和文本区/标签的jFrame,目的是为了能够检索我的系统IP地址,问题是,当我使用这段代码时

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try
        {
            InetAddress ownIP=InetAddress.getLocalHost();
            jTextField1.setText(ownIP.getHostAddress());
        }
        catch (Exception e)
        {
            jTextField1.setText(e.getMessage());
        }
    }

但是这会让我得到回环IP地址,即127.0.0.1 :( 我在系统上配置了静态IP,但是该IP仍未显示。 我使用NetBeans IDE 7.0和Ubuntu 11.04


看看这个,可能会有帮助: https://dev59.com/fXRB5IYBdhLWcg3w1Kr0 - Philippe
都不起作用,不知道为什么... :( - Roshan
2个回答

4

你可能想要使用 wlan0 或者 eth0lo 指的是回环。 - Christian Mann
1
你可以使用isLoopback()方法来过滤回环地址。如果你同时运行IPv4和IPv6,你可能还想通过检查InetAddress的类型是否为Inet4Address或Inet6Address来过滤其中一个。 - prunge

2

值得一提的是,InetAddress.getLocalHost().getHostAddress() 可以获取到我的 真实 IP 地址。

顺便说一下,我在 MacBook 上通过 Eclipse 的单元测试运行了这个方法。


它仍然将127.0.0.1作为我的输出 :( - Roshan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接