adb 将远程端口转发到本地机器

Posted

技术标签:

【中文标题】adb 将远程端口转发到本地机器【英文标题】:adb forward remote port to local machine 【发布时间】:2011-03-25 20:29:33 【问题描述】:

这是一个关于安卓上 adb 使用情况的查询。

有没有办法将远程端口(即android设备/模拟器上的端口)转发到设备所连接的本地机器?

$ adb forward tcp:port1 tcp:port2 # 将机器上的本地端口port1转发到设备上的port2。

提前致谢!

【问题讨论】:

我现在处于类似情况,但我想我会走不同的路线:将应用程序绑定到 127.0.0.1:12345 并通过隧道连接到该端口。为什么你这么关心谁发起了连接?建立 TCP 连接后,双方可以通话/收听吗? 【参考方案1】:

最近谷歌更新了 ADB 服务。并添加了reverse 命令来完成这项工作。

来自reverse 文档:

这实现了adb reverse 功能,即反转的能力 从设备到主机的套接字连接。 <forward-command> 是一个 上面描述的转发命令,如:

    list-forward forward:<local>;<remote> forward:norebind:<local>;<remote> killforward-all killforward:<local>

请注意,在这种情况下,<local> 对应于设备上的套接字 而<remote>对应主机上的socket。

reverse:list-forward 的输出与 host:list-forward 相同 除了<serial> 将只是host

【讨论】:

【参考方案2】:

您真的需要转发端口,还是只是在寻找一种使用套接字从运行在 android shell 上的程序与主机进行通信的方法?我能够通过将我的消息发送到“10.0.2.2”上感兴趣的端口来完成后者,这是主机的环回适配器。请参阅文档here。

编辑 这是更新后的link

【讨论】:

如何使用设备而不是模拟器来实现这一点? @Johnny 在真实设备上,您将使用 adb reverse。例如,如果您的主机上有一台服务器正在侦听端口 8080,并且您想将设备上的端口 8000 反向转发给它,您可以使用adb reverse tcp:8000 tcp:8080 @sacha 我找不到关于 adb reverse 命令的任何文档。它真的存在吗?什么版本的 SDK? @akuz 据android.googlesource.com/platform/system/core/+/…称,2014年5月android代码中添加了adb reverse

以上是关于adb 将远程端口转发到本地机器的主要内容,如果未能解决你的问题,请参考以下文章

SSH 远程端口转发

SSH -R 远程端口转发

SSH高级功能 - 远程端口转发

做隧道转发的 正反

SSH 内网端口转发实战

git远程外网地址变内网怎么破(ssh本地端口转发)