1

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

我已经检查了以下帖子 如何通过代码在android模拟器中获取PC的IP地址 但看起来它只能给我PC的公共IP地址。

谢谢。

4

2 回答 2

1

您可以在此处查看我自己的答案,以验证您的 Android 模拟器实例可访问的各种设备的路由:

10.0.2.2可以使用模拟器中的 IP 地址访问主机。

这些是从模拟器获得的 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, 仿真设备自己的环回接口

包含说明的完整列表可以在“模拟器网络”的 Android 文档中找到。

于 2013-03-27T03:23:35.927 回答
0

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

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

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

  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/";
        }
    }
}
于 2013-03-27T03:10:31.370 回答