【问题标题】:How can I get my LAN IP address using Java [duplicate]如何使用 Java 获取我的 LAN IP 地址 [重复]
【发布时间】:2015-08-05 19:34:36
【问题描述】:

我想获取我的 LAN IP 地址。但我使用此代码显示 Localhost 地址。

public static void main(String[] args)
{
try
{
    InetAddress add=InetAddress.getLocalHost();
    System.out.println("Local IP: " + add.getHostAddress());
}
catch(Exception ex)
{
    System.out.println(ex.getMessage());
}        
}

显示 IP 为:127.0.1.1。 但是我的局域网ip地址是10.107.46.88

【问题讨论】:

  • 请edit您的问题解释列出的代码的实际结果是什么以及为什么这没有用。感谢您提高问题的参考价值并使其更易于回答!
  • 你想检索你的公共IP地址,而不是本地IP

标签: java server inetaddress


【解决方案1】:

我知道的最简单的方法是使用NetworkInterface.getNetworkInterfaces(),链接的Javadoc 指出您可以使用getNetworkInterfaces()+getInetAddresses() 获取此节点的所有IP 地址。这可能看起来像

try {
    Enumeration<NetworkInterface> nics = NetworkInterface
            .getNetworkInterfaces();
    while (nics.hasMoreElements()) {
        NetworkInterface nic = nics.nextElement();
        Enumeration<InetAddress> addrs = nic.getInetAddresses();
        while (addrs.hasMoreElements()) {
            InetAddress addr = addrs.nextElement();
            System.out.printf("%s %s%n", nic.getName(),
                    addr.getHostAddress());
        }
    }
} catch (SocketException e) {
    e.printStackTrace();
}

我得到(对于我的网络)

wlan0 192.168.2.9
lo 127.0.0.1

如果您不想显示环回,可以使用isLoopback() 测试NetworkInterface。

while (nics.hasMoreElements()) {
    NetworkInterface nic = nics.nextElement();
    if (!nic.isLoopback()) {
        // ... as before
    }
}

【讨论】:

  • 真的很有帮助。但我只想获取 LAN IP 地址。
  • @Uzzal 这就是他给你的。
猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 2013-08-04
  • 2015-06-06
  • 2020-12-19
  • 2013-08-19
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多