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 将远程端口转发到本地机器的主要内容,如果未能解决你的问题,请参考以下文章