You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于ADB实现Android设备双向IPC通信的方案咨询

双向通信简易解决方案(无需切换adb连接方向)

针对Android 8设备与主机的双向通信需求,这里有几个实用且不用反复切换连接方向的方案:

方案1:使用Netcat(nc)建立双向TCP会话

这是最轻量化的方案,几乎所有Android设备(自带nc工具,没有的话也可以轻松安装)和主机都支持:

  1. 主机端启动监听
    在主机终端执行:

    nc -l 8888  # 这里的8888可以换成你想用的本地端口
    
  2. 设备端主动连接主机
    通过adb shell进入设备环境,执行:

    nc 主机局域网IP 8888
    

    (如果设备和主机在同一WiFi下,直接用主机的局域网IP即可;要是用USB连接且不想依赖网络,也可以先做adb端口转发再连接)

建立连接后,两边的终端就形成了完全双向的会话——你在主机输入的内容会实时传到设备,设备输入的内容也会立刻显示在主机,关闭会话只需要按Ctrl+C,全程不用切换任何adb转发方向。

方案2:USB连接下的adb转发+双向Socket

如果依赖USB连接、不想用局域网,这个方案更稳妥:

  1. 设备端启动TCP监听
    在主机终端执行adb命令,让设备监听一个端口:

    adb shell nc -l 9999  # 9999为设备本地端口
    
  2. 主机端建立转发并连接
    打开另一个主机终端,先做adb正向转发,再用nc连接转发后的端口:

    adb forward tcp:8888 tcp:9999
    nc localhost 8888
    

    现在主机的nc和设备的nc之间就形成了双向通信通道,两边可以自由互发消息,全程不需要切换adb的forward/reverse模式。

方案3:用Socat实现更稳定的双向桥接

如果需要更可靠的连接(比如支持自动重连、多协议适配),可以用socat工具:

  1. 给设备安装socat
    把适配Android的socat二进制文件推送到设备,再赋予执行权限:

    adb push socat /data/local/tmp/
    adb shell chmod +x /data/local/tmp/socat
    
  2. 建立双向连接

    • 主机端执行:
      socat TCP-LISTEN:8888,fork STDIO
      
    • 设备端通过adb shell执行:
      /data/local/tmp/socat TCP:主机局域网IP:8888 STDIO
      

    这个方案适合需要长期稳定通信的场景,还能通过参数配置实现断连自动重连等高级功能。

小提示

  • Android 8设备上,如果是自己开发的App使用Socket通信,记得在Manifest里添加<uses-permission android:name="android.permission.INTERNET"/>权限
  • 所有方案建立连接后,都能实现双向数据传输,不需要再调整adb的转发方向

内容的提问来源于stack exchange,提问作者Frank Podborski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:19:30