【发布时间】:2010-10-28 15:34:47
【问题描述】:
我想知道两个 Android 模拟器之间的通信是否可以在两台联网的不同机器上开始。
例如 - 模拟器 A 在机器 M1 上运行 - 模拟器 B 在机器 M2 上运行
A 和 B 可以交换消息吗?
如果是,我使用什么 IP 地址?
非常感谢 黛博拉
【问题讨论】:
我想知道两个 Android 模拟器之间的通信是否可以在两台联网的不同机器上开始。
例如 - 模拟器 A 在机器 M1 上运行 - 模拟器 B 在机器 M2 上运行
A 和 B 可以交换消息吗?
如果是,我使用什么 IP 地址?
非常感谢 黛博拉
【问题讨论】:
你可能已经知道了。从 android-sdk-tools_r7 开始,至少应该可以将两个模拟器相互连接。我不知道物理机之间是否有效。或许可以在两个主机之间为这个特定的广播设置伪装。
来自安卓commit
启用仿真器互连
此补丁为模拟器添加了一个 -shared-net-id 选项 在共享网络中加入模拟器。 如果给出了该选项,则模拟器会以附加的方式启动 绑定到多播套接字的网络接口。这个多播套接字 模拟网络集线器,互连模拟器。 如果未给出 -shared-net-id 选项,则不会发生任何变化。
要连接两个模拟器,请在启动模拟器时使用-shared-net-id <number> 命令行选项。然后,他们将直接在模拟器上共享发送到或从 ip 10.1.2.<number> 读取的所有内容。
另一种方法是使用 adb 在模拟器之间启用端口转发,然后为联网机器上的这些端口设置伪装。
我不确定这两种解决方案是否符合您所要求的用例。如果没有,向原始问题添加更多详细信息可能会有所帮助。 :)
免责声明:我没有尝试过第一种方法,第二种我只是用来确保模拟器可以绕过令人讨厌的公司防火墙和 HTTP 代理,以便我们可以测试 android 浏览器。原则应该是合理的。
更新: 不,我玩了很多次,但没有找到好的解决方案。我在 iptables 方面做得不够好,无法建立一个适用于服务器端的有效隧道。
问候,
迈克尔
【讨论】:
模拟器通常具有对开发机器的 LAN 或 Internet 连接的出站访问权限,因此问题出在入站端。
您可以使用模拟器或 ADB 端口转发将流量发送到模拟器,但可能只能在开发机器的环回接口上本地产生流量,而不是外部流量。如果确实如此,最简单的事情可能是编写或配置一个端口转发器,它侦听开发机器的外部接口并转发到转发到模拟器的端口。
【讨论】: