java - 如何使用 adb 端口转发?
问题描述
我正在为 Android Studio 创建一个调试插件,这将启动一个服务器并监听一个端口。通过 USB 连接的设备(运行 adb 守护程序的移动设备)。
我的应用程序会将一些文件、请求、日志简单地发送到端口。这是我的概念。
所以我想通过USB发送它。虽然进行了一些挖掘,但我发现ADB 端口转发/反向是这个问题的答案。但是我不明白使用 adb 进行端口转发的整个概念。
我想同时开始
ServerSocket
开发机器和移动设备吗?如果是这样,我启动
ServerSocket: on port 8080
和设备ServerSocket: on 9090
然后执行adb forward tcp:8080 tcp:9090
将被转移到8080
开发机器上?他们如何转发或重定向到机器端口?
如何从java代码执行adb命令?
最终目标是我想与我的应用程序/库从电话到开发机器进行通信。
我是网络和这类事情的菜鸟。
提前致谢。
解决方案
我建议您阅读并遵循本教程中解释的步骤。当我为 PC 游戏编写 android 游戏控制器时,本教程对我很有帮助,其中 android 应用程序通过 USB 向 PC 发送输入(使用 adb)
- 我想在开发机器和移动设备上启动 ServerSocket 吗?
不,只有一侧必须打开 ServerSocket(对我来说,在 android 设备上打开 ServerSocket 并使用 PC 上的客户端套接字进行连接工作得很好)
- 如果是这样,我在端口 8080 上启动 ServerSocket: 并在 9090 上启动设备 ServerSocket: 然后执行 adb forward tcp:8080 tcp:9090 将被转移到开发机器上的 8080吗?
不知道在开发机器上打开 ServerSocket 是否适合你,当我使用 adb 时它对我不起作用。确保您正在执行以下步骤
一个。在一侧打开 ServerSocket 并监听连接 (ServerSocker.accept()) 说端口号 38100
湾。从开发机器执行 adb 命令forward tcp:38300 tcp:38100
C。然后在客户端调用socket = new Socket("localhost", 38300);
d。传输数据
- 如何从java代码执行adb命令?
使用 java 运行时类
String adbPath = "C:\\android-sdk-windows\\tools\\adb.exe";
Runtime.getRuntime().exec(adbPath + " forward tcp:38300 tcp:38100");
推荐阅读
- visual-studio-2017 - VS SQL 单元测试项目上的“无法访问已处理的对象”错误
- windows - 离线部署 NPM 文件到工件
- django - Django将未登录用户重定向到登录页面
- java - 扩展一个没有构造函数的类
- python - 如何检查我的字符串在python中是否为空
- list - 如何从 R 中的 mapply 或 Map 函数中的数据列表中选择 2 个变量?
- mysql - 无法使用 JOIN 更新特定记录
- r - drv <- dbDriver("Oracle") 在命令行 R 中工作正常,但在 RStudio Server 上不工作
- java - 面向对象编程 - 两种方式组合实践?
- c++ - 创建数组并从中检索数据时 C++ 中的未定义行为