Android 设备是不是有静态 IP 地址?

Posted

技术标签:

【中文标题】Android 设备是不是有静态 IP 地址?【英文标题】:Do Android devices have a static IP address?Android 设备是否有静态 IP 地址? 【发布时间】:2012-03-11 07:37:03 【问题描述】:

android 设备是否有一个服务器可以识别它们的静态 IP 地址?我想知道这将允许我的游戏无需登录即可保存数据。

【问题讨论】:

我不知道IP,但他们应该有一个唯一的mac地址。 考虑当用户更换/升级设备并从备份或 SD 卡恢复数据时会发生什么。该新设备是否应该被视为来自同一用户?如果是这样,那么您可能不想被绑定到硬件或网络配置的任何属性。 【参考方案1】:

这完全取决于它们连接到什么。默认情况下,没有。大多数 Android 设备都为无线网络配置了 DHCP,我不知道有任何运营商会为其数据网络上的移动设备分配静态 IP 地址。

【讨论】:

我一直在寻找一种方法来修复我的 Android 移动 IP,通过某种代理或 IP 欺骗器或其他方式,但到目前为止无济于事。我正在尝试仅从单个 IP 保护对路由器的远程访问,如果我的 IP 一直在变化,我将无法可靠地执行此操作。至少在 Play 商店中似乎没有任何有用的东西。如果我发现了什么,我会回帖。【参考方案2】:

正如其他人已经回答的那样,不,移动设备通常没有静态 IP 地址,而是使用 DHCP 获取动态 IP 地址。

但是,要回答您的基本问题,您可以使用 java.util.UUID class 为用户生成一个唯一令牌。将此生成的令牌保存到您应用的 SharedPreferences 中,您可以使用它来识别您的用户:

public static String getDeviceUuid(Context context) 
    final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);

    // Attempt to get an existing device uuid
    String uuid = preferences.getString("device_uuid_key", "");
    if (TextUtils.isEmpty(uuid)) 
        // We don't have a device id, generate one!
        uuid = UUID.randomUUID().toString();

        // Persist the new id to shared preferences
        final Editor editor = preferences.edit();
        editor.putString("device_uuid_key", uuid);
        editor.commit();
    
    return uuid;

【讨论】:

换个设备怎么样?这不会改变令牌 是的,这会改变令牌。此外,如果他们卸载该应用程序,然后重新安装它,他们将获得一个新令牌。如果您想在这些更改中识别它们,您最终需要将令牌与用户帐户(电子邮件地址或用户名)相关联。这样他们就可以在重新安装您的应用或更换设备时登录该帐户。【参考方案3】:

Android 设备既可以通过 WiFi 连接,也可以通过 3G 连接,这显然具有不同的 IP。 每次重连时,3G上的IP地址也会发生变化。

【讨论】:

【参考方案4】:

移动运营商使用 DHCP(动态主机配置协议)是一种应用层协议,用于为新连接到其网络的设备分配 IP 地址,并为移动设备分配可重复使用的 IP 地址。

【讨论】:

以上是关于Android 设备是不是有静态 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章

为啥监控摄像头要设置成静态IP地址?

在路由器中DHCP服务器里设置静态地址分配有啥作用

android设备 如何通过mac地址知道ip地址

如何设置CentOS 7获取动态及静态IP地址

设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址

如何为CentOS 7配置静态IP地址