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