NetworkInterface.isUp() returns 错误

NetworkInterface.isUp() returns false

我的一个 Android 测试平板电脑 (运行 Android 4.4.2) 有 NetworkInterface.isUp() 返回 false 的问题。此外,NetworkInterface.getInetAddresses() returns 一个空 Enumeration<InetAddress>。奇怪的是,我可以访问互联网,当我查看 Wifi 网络详细信息时,设备已获得 IP 地址。

在另一台设备上 (运行 Android 4.2.2) 没有报告问题。

所以这是我的两个问题:

  1. 到底什么是正在启动的接口?文档对此非常简短。

    Returns true if this network interface is up.

    我是说,怎么了? —字面意思。

  2. 问题是什么(原因),我该如何解决?

一个接口是"up"是一个网络接口有一个开放连接的事实。常用接口"up"如下:

  • 接口lo(即localhost127.0.0.1 ::1).
  • 当前活动的网络接口。例如,如果 wifi 处于活动状态,wlan0

其工作原理如下。您可能有多个网络接口正在运行。所有网络接口都可以通过 NetworkInterface.getNetworkInterfaces() 访问。这些网络接口中的每一个都绑定到一个或多个地址(例如,您的主要 wifi 设备通常名为 wlan0,可以同时具有 IPv4 作为 IPv6 地址)。这些地址可以通过

访问
Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
NetworkInterface ni = nis.nextElement();
Enumeration<InetAddress> addresses = ni.getInetAddresses();

您应该检查您是否不小心引用了(几乎)总是启动的本地主机,或者是另一个启动的接口。