zoukankan      html  css  js  c++  java
  • adb client, adb server, adbd原理浅析(附带我的操作过程)【转】

    本文转载自:http://blog.csdn.net/stpeace/article/details/24933813

         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个同样的苹果, 不允许切割, 请问怎么分?

     

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

  • 相关阅读:
    Linux性能调优
    Linux动态库搜索路径的技巧
    [转]Linux动态库的种种要点
    [转]谈谈Linux下动态库查找路径的问题
    性能测试的几种业务模型设计
    性能测试解惑之并发压力
    一个系统的最大并发用户数为1100,怎么能推算出该系统的支持最大用户数
    IP欺骗
    关于Cocos2d-x随机数的生成
    关于Cocos2d-x节点和精灵节点的坐标、位置以及大小的设置
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/8166258.html
Copyright © 2011-2022 走看看