如何使用adb端口转发?

时间:2018-04-25 10:07:30

标签: java android adb portforwarding intellij-plugin

我正在为Android Studio创建调试插件,这将启动服务器并侦听端口。该设备(移动与adb deamon运行)通过USB连接。

我的应用程序将发送一些文件,请求,只将数据记录到端口。这是我的概念。

所以我想通过USB发送它。虽然我发现了一些挖掘 ADB端口转发/反转的答案。但我并不了解使用adb的端口转发的整个概念。

  1. 我想在开发机器和移动设备上启动ServerSocket吗?

  2. 如果是,我启动ServerSocket: on port 8080和设备ServerSocket: on 9090然后执行adb forward tcp:8080 tcp:9090将转移到开发机器上的8080

    < / LI>
  3. 他们如何转发或重定向到机器端口?

  4. 如何从java代码执行adb命令?

  5. 最终目标是我想与我的应用程序/库通信,从手机到开发机器。

    我是网络和这类事情的小伙子。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

我建议您阅读并遵循this教程中说明的步骤。当我为PC游戏编写安卓游戏控制器时,这个教程真的帮助了我,其中android应用程序通过USB向PC发送输入(使用adb)

  1. 我是否想在开发机器和移动设备上启动ServerSocket?
  2. 不,只有一方必须打开ServerSocket(对我来说在Android设备上打开ServerSocket并使用来自PC的客户端套接字连接工作完美

    1. 如果是这样,我启动ServerSocket:在端口8080和设备ServerSocket:在9090然后执行adb forward tcp:8080 tcp:9090将转向8080在开发机器上 < /强>?
    2. 不知道在开发机器上打开ServerSocket是否适合你,当我使用adb时它对我不起作用。确保您正在执行以下步骤

      一个。一边打开ServerSocket并侦听连接(ServerSocker.accept())说端口号为38100

      湾从开发机器执行adb命令forward tcp:38300 tcp:38100

      ℃。然后在客户端致电socket = new Socket("localhost", 38300);

      d。传输数据

      1. 如何从java代码执行adb命令?
      2. 使用java Runtime类

        String adbPath = "C:\\android-sdk-windows\\tools\\adb.exe";
        Runtime.getRuntime().exec(adbPath + " forward tcp:38300 tcp:38100");
        

        请参阅Execute external program from java