博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
adb client, adb server, adbd原理浅析(附带我的操作过程)【转】
阅读量:6048 次
发布时间:2019-06-20

本文共 1647 字,大约阅读时间需要 5 分钟。

本文转载自:

     adb是什么? adb就是Android调试桥,很形象啊。 先来看adb原理的逻辑图:

 

     再来进行实际操作:我的pc的ip是192.168.1.102, 我的android手机的ip为192.168.1.100

    1.  在pc上执行:netstat -nao | findstr 5037

         发现结果是空白。

 

    2. 执行adb shell, 肯定是进不了任何shell啊, 然后执行:netstat -nao | findstr 5037

        结果是:TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840

        可见3840进程正在监听5037端口, 这个进程实际上就是adb server

 

    3. 打开android手机,执行adb connect 192.168.1.100,  请参考我之前的博文, 确保adb能连接上手机哈。

       发现, 界面提示adb成功连接上了手机。

       执行netstat -nao | findstr 5037, 居然仍然是:TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840

       执行adb shell, 进入手机的android系统, 再次在pc的cmd中(非前面的shell中)执行netstat -nao | findstr 5037, 结果为:

      TCP    127.0.0.1:1571         127.0.0.1:5037         ESTABLISHED     4496

      TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       3840
      TCP    127.0.0.1:5037         127.0.0.1:1571         ESTABLISHED     3840  

       表明,adb client和adb server建立tcp连接了。

 

     4. 不需要退出上面的shell, 仅在另一个cmd中执行 netstat -nao | findstr 5555, 结果为:

         TCP    192.168.1.102:1559     192.168.1.100:5555     ESTABLISHED     3840

        表明, adb server和adbd建立起了tcp连接。

 

     5. 前面已经进入了手机的shell, 现在在shell中执行:netstat -nao | busybox grep 5555, 结果为:

         tcp       0      0 0.0.0.0:5555           0.0.0.0:*              LISTEN

         tcp       0      0 192.168.1.100:5555     192.168.1.102:1559     ESTABLISHED

         进一步证实, adb server和adbd建立起了tcp连接。

 

        归纳:

        adb client(pid:4496)   <--->adb server(监听5037端口, pid:3840)<--->adbd(监听5555端口, pid:未显示)

        |<-------------------------------    在 pc 端    ------------------------------> |        |<------------ 在手机端------------>|

 

        其中, adb server作为adb client的服务端, 而adbd又作为adb server的服务端, 实际上就是下面这个意思:

       儿子 <------------------------------> 爸爸<------------------------------------->爷爷

 

        

        前面我们已经说过, 也可以利用数据线来进行连接, 这里, 我就不过多再赘述了, 原理大体类似, 为了让大家更清晰, 我借鉴了网上的一幅图, 这幅图很强大, 真是太棒了:

        

       一图胜千言万语闭嘴闭嘴闭嘴

 

 

 

       突然, 我想起了小时候, 一个老人给我出的题: 两个爸爸和两个儿子, 要均分3个同样的苹果, 不允许切割, 请问怎么分?

 

       不闲扯了, 关机。去楼下买点东西吃吃, 逛逛, 回来看看毕淑敏的书, 明天还要上班呢!

你可能感兴趣的文章
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>
C++中变量的持续性、链接性和作用域详解
查看>>
2017 4月5日上午
查看>>
第一阶段冲刺报告(一)
查看>>
使用crontab调度任务
查看>>
【转载】SQL经验小记
查看>>
zookeeper集群搭建 docker+zk集群搭建
查看>>
Vue2.5笔记:Vue的实例与生命周期
查看>>
论JVM爆炸的几种姿势及自救方法
查看>>
使用throw让服务器端与客户端进行数据交互[Java]
查看>>
java反射与代理
查看>>
深度分析Java的ClassLoader机制(源码级别)
查看>>
微服务架构选Java还是选Go - 多用户负载测试
查看>>
我的友情链接
查看>>
69、iSCSI共享存储配置实战
查看>>
乔布斯走了。你还期待苹果吗?
查看>>
优先级
查看>>
Tomcat与Web服务器、应用服务器的关系
查看>>