Android 如何从设备中查找动态 IP? [复制]

Posted

技术标签:

【中文标题】Android 如何从设备中查找动态 IP? [复制]【英文标题】:Android How to find Dynamic IP from device? [duplicate] 【发布时间】:2011-03-22 02:00:46 【问题描述】:

我有办法找到 DHCP 地址和主机地址。 如何找到分配给我的设备的动态 IP 地址。 我可以从http://www.ip2location.com/default.aspx得到地址

如何在设备中获取此 IP?

【问题讨论】:

【参考方案1】:
ipString = String.format( 
    "%d.%d.%d.%d", 
    (ip & 0xff), 
    (ip >> 8 & 0xff),
    (ip >> 16 & 0xff),
    (ip >> 24 & 0xff));

【讨论】:

这是什么?没有说明【参考方案2】:

您可以使用外部服务器来请求您的 IP,就像 @Midday 建议的那样。这可能是最简单的解决方案。问题是您将不得不依赖网络和远程服务器,这可能并不总是可靠的。

您也可以直接从您的设备上获取它,但您必须跳过一些环节才能做到这一点 - 获取您设备的 IP 地址并不像在 android 上那么简单。

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();

注意ipAddress 是一个整数。

例如,如果您的 IP 地址是“86.52.119.245”:

getIpAddress 返回的 int 将为 4118230102。 翻译成二进制这个数字是:11110101 01110111 00110100 01010110。 将每个字节转换为十进制,然后得到数字:80 35 83 10 请注意,数字是按网络顺序排列的,因此您必须翻转它。

希望对你有帮助。

【讨论】:

你能帮忙如何翻转它以获得原始ip吗? 查看上面的答案,同时应用它们,您将获得熟悉的 IP。【参考方案3】:

如果您希望外部 IP this website 可以帮助您,他们也有一个 XML API 希望这会有所帮助。如果您需要本地 IP(如果在 WIFI 上),Android api 中应该有一些内容

【讨论】:

【参考方案4】:

这帮助我获得了 IPv4 IP。我从另一篇文章中得到它,但一些搜索结果显示了这个。

public static String getMyIp()
    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()) 
                    if(InetAddressUtils.isIPv4Address(inetAddress.getHostAddress())) 
                        return inetAddress.getHostAddress().toString();
                    
                
            
        
     catch (SocketException ex) 
        Log.e("NetworkSettings", "There was a socket error: " + ex.toString());
    
    return null;

取自 "How to get my ip address?" post 并添加了对 IPv4 的检查(它为我返回了 IPv6)

【讨论】:

以上是关于Android 如何从设备中查找动态 IP? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Android 在托管热点时查找设备的 IP 地址

Android动态屏蔽IP地址

jQuery Mobile 无法在 Android 设备上动态更改图像

从Android应用程序获取设备的MAC地址和IP地址[重复]

如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?

在android中获取网关IP地址