本文转载自: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. asp.net开发的调试方法集合

    调试是写代码一共非常重要的步骤,掌握好调试的技巧对于编程有事半功倍的效果,下面是我总结的菜鸟用方法 1.关于HTML和JS的调试 JS曾经是我最讨厌的错误,因为大多数错误VS不报错,这是因为js是解释 ...

  2. input标签附带提示文字(bootstrap里面输入框的两侧同时添加额外元素)

    一直不太喜欢用定位,今天写界面的时候,要在输入框右边添加默认的元素符号. 第一次尝试,因为本身项目用的是bootstrap所以就想利用输入框的两侧同时添加额外元素. 但是写了代码发现效果不同. 第二次 ...

  3. T2602 最短路径问题 codevs

    http://codevs.cn/problem/2602/ 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 黄金 Gold   题目描述 Description 平面上有n个点(n& ...

  4. String的引用传递

    一 引用传递的三个范例 范例一 package com.mtzsoft; /** * 范例一 * * @author Administrator * */ public class Test1 { p ...

  5. 提高google网站访问速度

    修改:C:\Windows\System32\drivers\etc\hosts文件 # google websites.203.208.46.180 ssl.gstatic.com203.208.4 ...

  6. python遍历两个列表,若长度不等,用None填充

    zip经常会遇到截断问题,如:a = [1,2,3], b = [4,5,6,7],则zip(a,b) = [(1, 4), (2, 5), (3, 6)] 可考虑使用map: map(lambda ...

  7. JVM 调优 —— 新生代 Survivor 空间不足

    零. 新生代调优规律 增大新生代空间. Minor GC 频率降低, Minor GC 时间上升. 降低新生代空间, Minor GC 频率上升, Minor GC 时间下降 一. 新生代典型问题 先 ...

  8. BZOJ 2809 APIO 2012 dispatching 平衡树启示式合并

    题目大意:给出一棵树,每个节点有两个值,各自是这个忍者的薪水和忍者的领导力.客户的惬意程度是这个点的领导力乘可以取得人数.前提是取的人的薪水总和不超过总的钱数. 思路:仅仅能在子树中操作.贪心的想,我 ...

  9. Python--学习过程

    基础篇 Python基础篇 Python的数据类型 作业总结

  10. 【iOS】系统框架学习

    iOS的系统架构分为四个层次:核心操作系统层(Core OS layer).核心服务层(Core Services layer).媒体层(Media layer)和可触摸层(Cocoa Touch l ...