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

 

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

adb client, adb server, adbd原理浅析(附带我的操作过程)【转】的更多相关文章

  1. adb client, adb server, adbd原理浅析(附带我的操作过程)

    adb是什么? adb就是Android调试桥,很形象啊. 先来看adb原理的逻辑图: 再来进行实际操作:我的pc的ip是192.168.1.102, 我的android手机的ip为192.168.1 ...

  2. adb root错误信息adbd cannot run as root in production builds问题解决

    adb root错误信息adbd cannot run as root in production builds问题解决 一.问题描述 1.输入指令 >adb root adbd cannot ...

  3. [ADB]ADB(Android Debug Bridge)简介及基础(不包含命令)

    "Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an ...

  4. 【原创】Android开发之ADB及ADB SHELl命令的应用

    adb的全称为Android Debug Bridge,就是起到调试桥的作用.通过adb我们可以在Eclipse中方面通过DDMS来调试Android程序,说白了就是debug工具.adb的工作方式比 ...

  5. 沉淀,再出发:docker的原理浅析

    沉淀,再出发:docker的原理浅析 一.前言 在我们使用docker的时候,很多情况下我们对于一些概念的理解是停留在名称和用法的地步,如果更进一步理解了docker的本质,我们的技术一定会有质的进步 ...

  6. adb、adb shell am、adb shell pm命令的详细使用说明

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/64183248 1.在命令行终端执行下面的命令: adb >adb.txt 2 ...

  7. ngrok原理浅析(转载)

    之前在进行 微信Demo开发时曾用到过 ngrok这个强大的tunnel(隧道)工具,ngrok在其github官方页面上的自我诠释是 "introspected tunnels to lo ...

  8. Android 怎样开启与关闭adb 的认证机制(google adb secure) (adb RSA 指纹认证)

    前言         欢迎大家我分享和推荐好用的代码段~~声明         欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net           ...

  9. Netty Client和Server端实现

    本文基于Nett4.0.26.Final版本浅析Client与Server端通讯,先看服务器端: public class Server { public static void run(int po ...

随机推荐

  1. 【2018.12.10】NOI模拟赛3

    题目 WZJ题解 大概就是全场就我写不过 $FFT$ 系列吧……自闭 T1 奶一口,下次再写不出这种 $NTT$ 裸题题目我就艹了自己 -_-||| 而且这跟我口胡的自创模拟题 $set1$ 的 $T ...

  2. 【noip】noip201503求和(题解可能不完美,但绝对详细)

    3. 求和 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 题目描述   一条狭长的纸带被均匀划分出了n个格子,格子编号从1到n.每个格子 ...

  3. 洛谷 [T21778] 过年

    离线扫描线+查分+线段树 我们发现,这个题的询问都是离线的,所以我们尝试用离线扫描线的方法来处理 对于每一次操作,我们维护一个差分数组, 在询问的时候,我们用一根扫描线,从左往右扫,并用线段树维护,每 ...

  4. calc BZOJ 2655

    calc [问题描述] 一个序列a1,...,an是合法的,当且仅当: 长度为给定的n. a1,...,an都是[1,A]中的整数. a1,...,an互不相等. 一个序列的值定义为它里面所有数的乘积 ...

  5. Bootstrap开启模态框后对数据处理(标记模态框的开启与关闭状态)

    JS用全局变量标记状态,方法中动态修改全局变量以标记状态是一个重要思想. 需求:组合条件查询数据,查询完之后填充到模态框中,开启模态框,模态框中有组合条件查询,此时查询只需要更新模态框表格数据不需要开 ...

  6. Powerdesigner 使用小技巧

    1.table与table之间:改直角为直线; 2.Name 和code 不联动

  7. 第一行代码 Android 思维导图

    第一行代码 Android  思维导图

  8. BZOJ 2957 楼房重建 (线段树)

    题目链接  楼房重建 解题思路:我们可以把楼房的最高点的斜率计算出来.那么问题就转化成了实时查询x的个数,满足数列x的左边没有大于等于x的数. 我们可以用线段树维护 设t[i]为如果只看这个区间,可以 ...

  9. sugar与阿龙的互怼(第一季)

    §   第一季 回家风波 高考了,啦啦啦~ 快要高考了,显然sugar很伤心. 显然不是因为快要考试了sugar才伤心的. 那为什么??? 因为他们都回家了,但是sugar和他的小伙伴们都不回家!!! ...

  10. mongDB的常用操作总结

    目录 常用查询: 查询一条数据 查询子元素集合:image.id gte: 大于等于,lte小于等于... 查询字段不存在的数据not 查询数量: 常用更新 更新第一条数据的一个字段: 更新一条数据的 ...