首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Tablet IP地址

Android Tablet IP地址
EN

Stack Overflow用户
提问于 2011-11-08 09:18:28
回答 3查看 1.4K关注 0票数 0

在这里,我面临一个关于获取Android Tablet IP地址的问题。

我正在以一种通用的方式为tablet附加程序使用以下代码。

代码语言:javascript
复制
  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();
                }
            }
        }

inetAddress.getHostAddress()方法以fe80::9a4b:4aff:fe00:a6e1的形式返回IP地址,这是一种不同的格式,而不是122.xx.xxx.xxx格式。

当我使用Wifimanager类获取tablet地址时,它只返回这种格式的122.xx.xxx.xxx

但使用通用的方式,我不知道它为什么给出错误的格式。

有谁能帮我解决这个问题吗..。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-11-08 09:21:38

fe80::9a4b:4aff:fe00:a6e1一点也不错。这只是一种新风格,IPv6.

新的应用程序应该总是设计成能够在这两种格式下工作。

票数 0
EN

Stack Overflow用户

发布于 2011-11-08 09:23:13

这是一个IPv6地址。首先来看一下维基百科文章。可以将IPv6地址转换为IPv4地址(即xxx.xxx),但这不能保证。

票数 0
EN

Stack Overflow用户

发布于 2011-11-08 10:03:23

/*查看可用的网络接口,并选择第一个“体面”的IPv4地址。*由于模拟器默认使用10.0.2.15,只有在没有更好的可用时才使用它。*/

代码语言:javascript
复制
public String getMyIp() {
        Set<String> eligible = eligibleIpAddresses();

/* For the emulator, prefer an IP address other than 10.0.2.15 (default emulator address)
             * but use it if it is the only one. */
        if (eligible.size() > 1) {
            eligible.remove("10.0.2.15");
            return eligible.iterator().next();
        } else if (eligible.size() == 1) {
            return eligible.iterator().next();
        } else {
            Log.w("Using local IP address, no external objects will be discovered","---");
            return "127.0.0.1";
        }
    }

    public static Set<String> eligibleIpAddresses() {
        Set<String> eligible = new HashSet<String>();
        try {
            Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
            while (netInterfaces.hasMoreElements()) {
                NetworkInterface ni = netInterfaces.nextElement();
                Enumeration<InetAddress> address = ni.getInetAddresses();
                while (address.hasMoreElements()) {
                    InetAddress addr = address.nextElement();
                    if (!addr.isLoopbackAddress() && !(addr.getHostAddress().indexOf(":") > -1)) {
                        eligible.add(addr.getHostAddress());
                    }
                }
            }
        } catch (Exception e) {
        }
        return eligible;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8048176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档