【问题标题】:Communication between two Android emulators两个安卓模拟器之间的通信
【发布时间】:2019-06-10 19:32:55
【问题描述】:

我的机器在窗口 7 上运行。 我想在同一台机器上运行的两个 android 模拟器之间进行通信。
模拟器首先监听一些 IP 10.0.2.15 当第二个模拟器尝试创建时

Socket socket = new Socket ("10.0.2.15",8080);

出现异常,无法连接到 10.0.2.15 有人知道如何解决这个问题吗?

编辑:我已经读过https://developer.android.com/studio/run/emulator-networking#connecting,但它说

在 B 的控制台,发出 redir add tcp:8080:80

B的控制台是什么意思,或者B的控制台在哪里??

【问题讨论】:

标签: java android


【解决方案1】:

您需要在 Windows 7 机器上安装 TELNET。为此,控制面板 -> 程序和功能 -> 打开或关闭 Windows 功能 -> Telnet 客户端(必须勾选)。

然后,在cmd(命令提示符)中,您可以说adb devices(如果Android SDK 在您的PATH 上),它会返回诸如emulator-5554emulator-5556 之类的标识符。

现在使用 telnet,您可以使用 telnet localhost 5554telnet localhost 5556 访问它们。

要让他们告诉你它是哪个模拟器,你可以输入avd name

但更重要的是,它会告诉你:

Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'C:\Users\[youruser]\.emulator_console_auth_token'
OK

这是一个包含一些随机神秘文本的文本文件。

您可以像这样复制粘贴到 telnet 中:

auth cdPi82HewjZg

它会说OK,现在你可以实际运行文档中所说的命令了。

现在你可以说

redir add tcp:6000:4000

这意味着:if the emulator would receive something to Port 6000 from LocalHost, then it should receive it as 4000

这意味着您的其他模拟器可以通过10.0.2.2魔术环回IP通过向6000发送数据来连接到它,而其他模拟器将使用端口4000接收它。 p>

它不仅适用于tcp:,也适用于udp:

您可以列出redir,甚至可以使用redir del 删除重定向。

【讨论】:

  • @CommonsWare 很抱歉昨晚猛烈抨击,真的是凌晨 3 点(最终是 5 点),我确实只找到了 5 个不同的答案,除了“阅读文档”之外什么也没说。
  • ¯\_(ツ)_/¯ -- 在我删除了我公认的糟糕的旧答案后,你的开场白不再相关。这就是我修剪它的原因。你的回答太棒了!另外,我印象深刻的是,您挖掘了将 telnet 添加到 Windows 7 的旧说明。:-)
  • 如果使用相同的 tcp:6000:4000,传入服务器和客户端套接字的端口号应该是多少
  • 重定向到6000:4000的模拟器应该是4000的服务器socket,客户端socket应该尝试在6000连接它。
【解决方案2】:

可能有两个原因

  1. 据我所知,您运行的是
  2. 添加 Internet 权限
  3. 尝试运行服务器首先在模拟器号 5554 和客户端(比如)5556 中运行
    然后输入

    telnet localhost 5554
    

【讨论】:

    猜你喜欢
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多