【问题标题】:Emulator networking ip address and virtual router模拟器网络IP地址和虚拟路由器
【发布时间】:2018-01-30 13:24:22
【问题描述】:

我在 Windows 上使用 android 模拟器。 android 开发者文档说模拟器的每个实例都在虚拟路由器/防火墙服务后面运行。每个实例的虚拟路由器管理 10.0.2/24 网络地址空间。但是,当我使用adb shell 连接到模拟器并执行ifconfig 时,我得到以下输出:

radio0 链路封装:UNSPEC inet 地址:192.168.200.2 广播:192.168.200.255 掩码:255.255.255.0

wlan0 链接封装:UNSPEC inet 地址:192.168.232.2 广播:192.168.239.255 掩码:255.255.248.0

ip route show 给我以下输出

192.168.200.0/24 dev radio0 proto kernel scope link src 192.168.200.2

192.168.232.0/21 dev wlan0 proto kernel scope link src 192.168.232.2

我没有看到任何 10.2.x.x 的 IP 地址。那些ip地址在哪里?

虚拟路由器也是在模拟器中运行(在 Android 操作系统上)还是在 Windows 上运行?如何检查虚拟路由器?

【问题讨论】:

    标签: networking android-emulator


    【解决方案1】:

    我在 Windows 上运行 Android 7.1.1 (API 25) 时遇到同样的问题。 但是当我模拟 Android 7.0 (API 24) 时,它按预期工作。设备获得 IP 10.0.2.15。在这种情况下,ip route show 将带来 10.2.x.x 地址。因此,如果您可以只使用以前的版本(API 16 - API 24)。

    此路由器存在于模拟器中,Windows 不知道它。 如果您需要从 Windows 访问模拟器中运行的服务,您需要添加端口映射:

    telnet localhost 5554
    auth <token from 'C:\Users\{user}\.emulator_console_auth_token'>
    redir add tcp:8080:8080
    

    然后您可以通过以下方式访问您的服务:127.0.0.1:8080。但是,此方法不适用于 Android 7.1.1。我不知道它有什么问题。

    【讨论】:

    • 转到旧版本是蹩脚的。查看我昨天发现的答案。
    【解决方案2】:

    从 API 25 开始,模拟器的网络似乎发生了变化。设备 IP 不再是 10.0.2.15,并且通过 telnet 发出“redir”命令(如文档所述)不再起作用。

    要进行重定向,请使用 adb 程序。首先,确保 adb 在您的搜索路径中。通常,它位于 Android/Sdk/platform-tools 下,无论 Android SDK 位于何处,无论您使用什么操作系统。

    然后,使用以下命令行:

    adb forward tcp:<host port> tcp:<guest port>
    

    (例如:adb forward tcp:8080 tcp:8080)。现在,您可以使用telnet localhost &lt;host port&gt; 访问端口,该端口将被重定向到访客。

    这是非常不幸的,因为(从 build 28 开始)它没有以这种方式记录。我假设在某些时候文档会被修复。

    【讨论】:

    • 我可以确认这是可行的,找到这个答案非常困难,希望我能投票更多
    【解决方案3】:

    实际上取决于。我已经在“Android 11 API 30 Emulator”和“Android TV 9 API 28 Emulator”上连接并测试了我的SFTP Server 应用。

    在“Android 11 API 30 Emulator”上,我的 SFTP 服务器应用程序显示在 IP 10.0.2.16 和端口 6789 上侦听,我可以使用redir add tcp:&lt;localhost-port&gt;:6789 连接到它(更多详细信息请参阅Setting up redirection through the Emulator Console)。但我也可以使用adb -s &lt;emulator-id&gt; forward tcp:&lt;localhost-port&gt; tcp:6789 连接到它。

    在“Android TV 9 API 28 Emulator”上,我的 SFTP 服务器应用程序显示在 IP 192.168.232.2 和端口 6789 上侦听,我只能使用 adb -s &lt;emulator-id&gt; forward tcp:&lt;localhost-port&gt; tcp:6789 连接到它。我无法使用redir add tcp:&lt;localhost-port&gt;:6789 连接到它。

    结论“adb forward”始终有效,因此应该使用。 (不要使用“redir add tcp”,它有时只能在地址范围 10.0.2.0/24 中工作)。

    【讨论】:

      猜你喜欢
      • 2016-01-11
      • 2012-11-06
      • 2012-03-07
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2013-02-27
      相关资源
      最近更新 更多