找到的Galaxy Tab 10.1的应用程序的IP地址(Finding the IP addres

2019-09-16 17:15发布

我已经写了HTC渴望一个应用程序,它获取设备的IP地址,并将其打印到屏幕上。 当我安装这个程序,我的标签10.1 IP地址的信件和数字在一个陌生的格式出来?

private String getIpAddress()
    {
        try
        {
            for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
            {
                NetworkInterface intf = en.nextElement();
                for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
                {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); }
                }
            }
        }
        catch(SocketException ex)
        {
            Log.e(TAG , ex.toString());
        }
        return null;
    }

什么是标签10.1有什么不同?

(IP返回 - FE80 :: be47:60ff:FEFF:21e2)

需要有一个IP地址,因为这是我传递到PC上的终端连接到我的应用程序。

Answer 1:

你的Galaxy Tab 10.1接收IPv6地址,在这种情况下fe80::be47:60ff:feff:21e2 。 这可能是由有关IPv6的不同喜好或你的HTC Desire的能力和Galaxy Tab的造成的。

有什么不妥,越来越多的设备会(有)使用IPv6地址,当IPv4地址空间耗尽。

作为尼西姆在他对这个问题的评论指出,IPv6的地址开始fe80:是链路本地地址 ,即地址范围的设备自我分配,如果它没有连接到转手出去的地址的任何网络,例如通过DHCP。

因此,它看起来像你的Galaxy Tab没有连接到任何WiFi网络或者不接受通过DHCP的地址。

在问题的代码片段返回它发现与没有过滤掉的链路本地地址(其不是从外部连接有用)的首地址。 下面的代码给你既不回送,也不链路本地所有地址。 你怎么许多人之间进行选择是由你 - 我真的不知道:

private static List<InetAddress> getIpAddress() {
  try {
    List<InetAddress> result = new ArrayList<InetAddress>();

    Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
    while (interfaces.hasMoreElements()) {
      NetworkInterface intf = interfaces.nextElement();
      Enumeration<InetAddress> addresses = intf.getInetAddresses();
      while (addresses.hasMoreElements()) {
        InetAddress address = addresses.nextElement();
        if (!address.isLoopbackAddress() && !address.isLinkLocalAddress()) {
          result.add(address);
        }
      }
    }
    return result;
  } catch (SocketException ex) {
    Log.e(TAG, "Failed to list network interfaces.", ex);
    return null;
  }
}

为了便于比较,我的Windows系统列出23个网络接口(其中大多数是虚拟的)共10个地址,其中2个是环回地址(本地主机),4链路本地地址 - 离开4不会忽略上面的代码会返回 - 采摘第一个似乎过于乐观。



文章来源: Finding the IP address of Galaxy Tab 10.1 for application