推广 热搜:   公司  企业  中国  快速    上海  行业  未来  设备 

ADB通信协议

   日期:2025-01-01     移动:http://fabua.ksxb.net/mobile/quote/5385.html

ADB通信协议

Client、Server和Daemon

  PC端有一个ADB.exe,它既是Client,也是Server,而Daemon则是存在于手机端,Daemon需要在开发者模式中手动开启。

  Client为我们使用ADB功能提供API,我们通过Client来执行ADB操作,但它只是请求的发起者而非执行者,具体执行请求是在Server和Daemon中完成。Server在后台运行,它的作用是作为沟通Client与Daemon的桥梁,由于Client与Daemon并未直接建立连接,Client与Daemon的交互由Server代为进行,Server也可以将Client指定的Daemon交给Client直接操作。

Service

  ADB的具体功能即Service分两种:Host Service和Local Service。Host Service由Server完成,例如adb devices命令就是Client向Server发起的请求,Server来查询连接到Server的Daemon数量和信息后返回给Client。Local Service由Daemon完成,例如adb shell。

启动流程

  使用adb start-server会在PC端启动ADB server并监听5037端口等待Client连接。此外,执行或等部分命令会默认向localhost:5037进行请求,如果连接超时则会自动在5037端口启动Server。另外,在启动Server以及使用Client时,我们可以指定IP和Port,实现远程请求。

  首先在一台机器上以1234端口启动ADB Server

  然后在另一台机器上用Client指定ip和端口进行连接

  Server启动后Client可以通过TCP向Server发起请求,格式如下

  比如查询adb的版本号,我们首先使用启动Server,然后使用socket连接,再使用socket发送,随后Server会返回或者,如果为则会继续返回具体的版本信息。其中即为头部,即为Payload,代表Payload的长度为12。其中Payload的前缀代表将执行Host Service中的操作。对于Local Service在下文中会提到。在接收到消息以后,Client和Server的连接不会断开,可以复用该连接继续进行请求,但是某些特定的命令会在接收到后改变连接的状态,比如会将连接转移到指定设备的Daemon中,来直接与其进行通信。

misc

  不难想象会存在Client和Server版本不匹配的情况,adb默认的操作是将server关闭并从adb.exe启动自己版本的server

参考文档

本文地址:http://fabua.ksxb.net/quote/5385.html    海之东岸资讯 http://fabua.ksxb.net/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关最新动态
推荐最新动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备2023022329号