adb 通信协议分析以及实现 (三) (Adb 网络通信部分解析)

来源:互联网 发布:怎么能修改淘宝会员名 编辑:程序博客网 时间:2024/06/10 16:30

这篇文章说下adb 和adb 服务进程之间通信的socket 协议。 


adb 服务进程启动之后,会监视本地的5037 端口,使用的是TCP 协议,所以adb 发送的命令其实就是往本地的5037 端口发送数据,做过网络编程的都知道,本机可以用127.0.0.1 ip地址。 有了ip 地址和端口号socket 通信就没问题


1)  命令发送方式

       命令以字节流发送,字符串需要编码成utf8。一个命令需要发送两部分内容。先把命令的长度发送过去,然后发送命令本身。比如 "abcdefghijklmn" 

       1. 先发送命令的长度 。

        int iLen = strlen("abcdefghijklmn");

  char tmp[5];

 sprintf(tmp, "%04x", iLen);

         senddata(tmp,4);  //发送数据的函数,tmp 缓存地址,4 表示 4个字节大小

       2.  发送命令本身

         senddata("abcdefghijklmn",iLen);

       

       3.  命令发送完之后,需要接收服务器的数据。正常情况下服务器会返回一个4字节的状态。OKAY,表示处理成功

char tmp[5];     

  int iRead = readdata((byte*)tmp,4);

if (0 == memcmp(tmp,"OKAY",4))

{

//接收成功

}

else

{

//失败了

}

     以上就是非常简单的命令。有些复杂的命令处理方式,比如安装apk,那就需要做更多的事情。要把文件传输到手机,然后发送安装命令。 这些复杂的命令也只是处理的命令,格式多一些。参照adb 的源码就可以自己写出来了。

这里大致说一下

1) 发送一个sync 命令,带上需要拷贝文件的目的路径

2) 发送文件的内容

3) 发送一个 shell:pm 命令启动安装


细节实现部分可以QQ: 1958601181

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 教师继续教育学时不够怎么办 在看守所37天后怎么办 cad证书丢了怎么办 学信网注册身份证重复怎么办 学历和学位认证怎么办 假学历无法认证怎么办 学历认证没照片怎么办? 毕业证封皮丢了怎么办 留服认证不了怎么办 无公害认证书怎么办 假学历认证报告怎么办 留学要求寄原件怎么办 干部小三怀孕怎么办? 小三的孩子怎么办 把小三打住院了怎么办 小月子没人伺候怎么办 寝室室友有狐臭怎么办 室友在寝室养猫怎么办 和直接领导不合怎么办 房产共有人去世怎么办 发现邪教宣传内容怎么办 说课时两个课时怎么办 投稿文章被拒绝怎么办 中立性细胞偏低怎么办? 孩子爱告状老师怎么办 高中学不好数学怎么办 想做老师应该怎么办 教师职称换学校怎么办 大四差选修学分怎么办 尔雅通识课学分没修满怎么办 大学全英文授课怎么办 小孩脑部有囊肿怎么办 防震期间门应该怎么办 在家待着没意思怎么办 人户分离上学怎么办 小孩上学没人接送怎么办 宝宝上学没人接送怎么办 上海浦东新区酒类许可证怎么办 金税盘里报税处理打不开怎么办 惠民卡到期了怎么办 遇到不拴狗链的主人怎么办