Java getHostAddress() 返回 VirtualBox IPv4 地址

标签 java ip-address virtualbox lan ipv4

我正在使用 Java 在一个类中构建一个简单的方法,该方法将获取用户计算机的 LAN IPv4 地址。对于大多数部分,这很好用,除了一个异常(exception)......我得到的 IP 地址是我的 VirtualBox 以太网适配器的 IPv4 地址,正如我输入 ipconfig 时所证明的那样> 进入命令提示符:

enter image description here

这是获取IP地址的方法:

import java.net.InetAddress;
import java.net.UnknownHostException;

...

private String getIP() {
  try {
    return InetAddress.getLocalHost().getHostAddress();
  } catch (UnknownHostException e) {
    return "0.0.0.0";
  }
}

谁能告诉我如何解决这个问题?我不想假设最终用户不会安装 VirtualBox(或类似的东西)。

感谢您的宝贵时间。

最佳答案

我认为您需要查看 NetworkInterface 类,看看在这种情况下它是否可以帮助您排除虚拟接口(interface):

    for (NetworkInterface networkInterface : Collections.list(NetworkInterface.getNetworkInterfaces())) {
        //Perhaps networkInterface.isVirtual() will help you identify the correct one?
    }

我的设置中没有任何虚拟接口(interface),所以我不知道它的效果如何,但我希望这能给你一个指导。

关于Java getHostAddress() 返回 VirtualBox IPv4 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219664/

相关文章:

java - java 8 HashMap 桶中使用了哪种树类型?

java - 如果没有 @Inject 构造函数或 @Provides 注释的方法,则无法提供 - Dagger 2

java - 如何将二进制与枚举一起使用?

c++ - 是否有库函数来确定 IP 地址(IPv4 和 IPv6)在 C/C++ 中是私有(private)的还是本地的?

c++ - Ubuntu virtualbox 中的 OpenGL 多线程示例

java - 无法将蓝牙设备列为列表

c - 收到的IP地址错误

c# - 如何在 Windows 服务或控制台应用程序中更改有问题的系统 IP

docker - 尝试使用virtualbox启动minikube时出现问题?

networking - 使用 xp 主机在 centos6 virtualbox 客户机上设置网络