【问题标题】:Get local IP address of the PC in Android在Android中获取PC的本地IP地址
【发布时间】:2013-03-17 01:58:53
【问题描述】:

我正在 PC 上的 Android 模拟器中运行一些 Android 代码。我想在我的Android代码中获取PC的本地IP地址,不知道这是否可能......

我查看了以下帖子 how to get ip address of pc in android emulator through code 但是貌似只能给我PC的公网IP地址。

谢谢。

【问题讨论】:

  • 只需在开发机器的终端运行 ifconfig 并记下 192.x.x.x 或 10.x.x.x 地址。

标签: android android-emulator ip-address


【解决方案1】:

您可以查看my own answer here 以验证您的 Android 模拟器实例可访问的各种设备的路由:

可以使用 IP 地址10.0.2.2 从 模拟器。

这些是从模拟器到达的 IP 地址:

  • 10.0.2.1,路由器/网关地址。
  • 10.0.2.2,主机环回接口的特殊别名(即开发机器上的 127.0.0.1)
  • 10.0.2.3,第一台 DNS 服务器
  • 10.0.2.4 / 10.0.2.5 / 10.0.2.6,可选的第二、第三和第四个 DNS 服务器(如果有)
  • 10.0.2.15,模拟设备自己的网络/以太网接口
  • 127.0.0.1,仿真设备自带的loopback接口

可在“Emulator Networking”的 Android 文档中找到包含说明的完整列表。

【讨论】:

    【解决方案2】:

    通常应将 android 设备或模拟器视为与您的开发计算机分开的计算机。

    也就是说,如果您想从 android 模拟器/设备连接到本地计算机,那么这里有 2 个选项供您选择。

    1. 使用将名称指向本地 PC 的内部 DNS,如果需要,您甚至可以使用它覆盖“实时”网址。

    2. 使用 BuildConfig.DEBUG 标志或类似机制在实时和调试 URL/资源之间切换

    例如要在导出时的实时 URL 和测试时的调试之间切换:

    public final class MyAppConstants
    {
        // url base for all requests to my API
        public static final String BASE_URL;
    
        // auto-switch between live and debug urls based on usage
        static 
        {
            if (BuildConfig.DEBUG)
            {
                URL_BASE = "http://debug.server.com/";
            }
            else
            {
                URL_BASE = "http://live.server.com/";
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-10
      • 2015-04-16
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2012-11-29
      • 2011-04-08
      相关资源
      最近更新 更多