本文转载自:http://blog.csdn.net/luansxx/article/details/25203323

角色

l  服务

服务是提供特定功能的实体,接收请求,返回应答是服务直接最表现。大部分服务经过转换表现为文件(包括套接字)句柄。服务存在于Adb Server、Adb Daemon中,也可能存在于adb体系以外的某个进程中。

l  客户端

客户端代表用户使用服务功能。客户端通过一系列数据转发连接与服务建立逻辑连接,方式请求,接收应答。

l  报文(apacket)

客户端与服务之间的通信数据没有特殊格式,但数据在中间转发连接上会分片为报文。

l  链路(atransport)

链路是Server与Daemon之间的连接,有Usb和Tcp两种实现形式。传输的数据是报文(apacket)。一条链路可以承载多个客户端——服务的逻辑连接。在链路上传递的报文还包含一个amessage头,指示报文的类型,通过的链路,以及链路上的逻辑连接id。

l  套接字(asocket)

套接字可以看成数据传输的中继节点,套接字之间的连接最终实现客户端到服务的数据通路。有三种类型的套接字:本地套接字(local_socket),远程套接字(remote_socket)和轻型套接字(smart_socket)。

l  转发(alistener)

转发是一种将远端端口映射到本地机制,有些情况下不能直接连接的远端端口,比如远端只侦听Loopback接口,或者远端处于NAT内网。连接转发端口就好像连接到远程服务上。

l  内部管道

内部管道由UNIX域套接字实现,用来将链路的阻塞IO模式转换为反应堆(poll)模式。

android adb 源码框架分析(2 角色)【转】的更多相关文章

  1. android adb 源码框架分析(1 系统)【转】

    本文转载自:http://blog.csdn.net/luansxx/article/details/25203269 ‘ Adb模块包括adb,adbd,源代码都在system/core/adb目录 ...

  2. android adb源码分析(1)

    ADB是Android debug bridge的缩写,它使用PC机可以通过USB或网络与android设备通讯. adb的源码位于system/core/adb目录下,先来看下编译脚本Android ...

  3. android adb源码分析(5)【转】

    本文转载自:http://blog.csdn.net/xgbing/article/details/52096880 本篇以“adb devices"命令为例,跟踪代码的执行流程. (1) ...

  4. golang 移动应用例子 example/basic 源码框架分析

    条件编译 我们在源码中可以看到2个文件: main.go 和 main_x.go 这两个包名都是 package main , 都有 main 函数. 不会冲突么? 答案是不会的, main_x.go ...

  5. MJRefresh源码框架分析

    MJRefresh是一款非常优秀的刷新控件.代码简洁,优雅.今天有时间对源代码阅读了一下.对MJRefresh的宏观设计非常赞叹.所谓大道至简就是这样吧.   MJRefresh所采用的主要设计模式非 ...

  6. Android base-adapter-helper 源码分析与扩展

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/44014941,本文出自:[张鸿洋的博客] 本篇博客是我加入Android 开源项 ...

  7. MTK Android 源码目录分析

    Android 源码目录分析 Android 4.0 |-- abi (application binary interface:应用二进制接口)|-- art (average retrieval ...

  8. 【Android测试】【第三节】ADB——源码浅谈

    ◆版权声明:本文出自carter_dream的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4651724.html 前言 由于本人精力 ...

  9. Android Volley源码分析

    今天来顺手分析一下谷歌的volley http通信框架.首先从github上 下载volley的源码, 然后新建你自己的工程以后 选择import module 然后选择volley. 最后还需要更改 ...

随机推荐

  1. 空指针问题(java.lang.NullPointerException)

    在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException).空指针异常绝对是Java中最难查找和调试的一种异常,你永远无法得到任何 ...

  2. BZOJ [P2124] 等差子序列

    线段树维护哈希值 要求出现长度大于三的等差子序列,我们只要找到长度等于三的就可以了 初看本题没有思路,只能暴力枚举,O(n^4) 后来发现,这个序列是n的一个排列,那么每个数字都只会出现一次 我们可以 ...

  3. Perl语言--一些关于赋值、引用的东西

    引用详解 一.定义引用有两种: 1.用斜线“\” 2.匿名引用 1.用反斜线的引用:数组.哈希.标量 数组的引用 my @array = (1,2,3); my $aref = \@array; 哈希 ...

  4. Laravel 控制器的response

    public function response(){ //响应json $data = [ 'errCode' => 0, 'errMsg' => 'success', 'data' = ...

  5. pl/sql小技巧

    更正方法: 然后把Automatic statistics的勾选去掉,点击apply即可

  6. go--time包

    格式化字符串 转 时间戳 ////获取本地location toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分 ...

  7. profile, bashrc, source, setup.*sh

    一. source: 命令是使该文件立刻执行,这样刚才做的修改就可以立即生效了,否则要重新启动系统修改才能生效.(执行其后命令使之立即生效,不用重启) 二.bashrc: 1.linux系统:/etc ...

  8. easyui分页时,总页数出错

    错误出现 MyBatis用easyui写后台分页代码时,出现翻页后显示总页数错误 代码如下 可能原因在于后台mappers.xml里的sql语句错误 <select id="getPr ...

  9. 问题:typedef char *pstring????

    typedef char *pstring; const pstring cstr = 0; //cstr是指向char的常量指针: const pstring *ps; //ps是一个指针,它的对象 ...

  10. 【深入Java虚拟机】之六:Java语法糖

    语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使 ...