adb通信原理分析】的更多相关文章

关于这个问题,自己研究了一下,没有研究出来 在网络上搜罗了一下,基本上关于ADB的原理用了两张图表示:        我表示没有看懂这两个图, 又开始查阅一些一些资料: 首先知道adb的通信有Socket,那么socket是什么呢? 套接字(socket)概念      套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远…
关于IM(InstantMessaging)即时通信类软件(如微信,QQ),大多数都是桌面应用程序或者native应用较为流行,而网上关于原生IM或桌面IM软件类的通信原理介绍也较多,此处不再赘述.而web端的IM应用,由于浏览器的兼容性以及其固有的“客户端请求服务器处理并响应”的通信模型,造成了要在浏览器中实现一个兼容性较好的IM应用,其通信过程必然是诸多技术的组合,本文的目的就是要详细探讨这些技术并分析其原理和过程. 1.基于web的固有通信方式 浏览器本身作为一个瘦客户端,不具备直接通过系…
一.UDP局域网通信. 这个比较简单,关于局域网中的2台或者更多的计算机之间的UDP通信,网络上一大把,直接复制粘贴就可以使用,原理也非常简单.所以,本文不做详细介绍. 二.UDP广域通信(包括路由器穿透技术) 广域网中的通信就比局域网复杂多了,而且会出现很多情况,每种情况的处理方式不同,下面一一道来. 1. 2台直接连接广域网中的计算机的UDP通信: 这种情况是最简单的一种,因为这2台计算机直接暴露在广域网环境下,他们都拥有独立的外网IP地址.这种情况我们可以直接利用2台计算机的外网IP和端口…
一.UDP局域网通信. 这个比较简单,关于局域网中的2台或者更多的计算机之间的UDP通信,网络上一大把,直接复制粘贴就可以使用,原理也非常简单.所以,本文不做详细介绍. 二.UDP广域通信(包括路由器穿透技术) 广域网中的通信就比局域网复杂多了,而且会出现很多情况,每种情况的处理方式不同,下面一一道来. 1. 2台直接连接广域网中的计算机的UDP通信: 这种情况是最简单的一种,因为这2台计算机直接暴露在广域网环境下,他们都拥有独立的外网IP地址.这种情况我们可以直接利用2台计算机的外网IP和端口…
自问自答的两个问题 在我们去讨论Handler,Looper,MessageQueue的关系之前,我们需要先问两个问题: 1.这一套东西搞出来是为了解决什么问题呢? 2.如果让我们来解决这个问题该怎么做? 以上者两个问题,是我最近总结出来的,在我们学习了解一个新的技术之前,最好是先能回答这两个问题,这样你才能对你正在学习的东西有更深刻的认识. 第一个问题:google的程序员们搞出这一套东西是为了解决什么问题的?这个问题很显而易见,为了解决线程间通信的问题.我们都知道,Android的UI/Vi…
由于要用到adb的知识,但是对adb啥也不了解,看了下android的代码,adb的源码在system/core/adb下面,然后网上搜下了资料,发现很多大神的源码分析,瞬间信心爆棚,把大神写的博客都浏览了一遍,然后手动运行了下adb命令,顺便跟踪了下过程,发现原来还是很好的理解,源码的各种线程创建,函数回调,对于我这种基础不咋好的,,还是看的晕晕呼呼,现在把我自己的理解给大家分享,有理解错误的还请多多指正. 一般直接上代码,可能看官都走了一大半,我们逆向的看,先看结果,再看过程,最后再看代码.…
Android系统的智能指针(轻量级指针.强指针和弱指针)的实现原理分析 分类: Android 2011-09-23 00:59 31568人阅读 评论(42) 收藏 举报 androidclassdebuggingdeleteobject Android系统的运行时库层代码是用C++来编写的,用C++来写代码最容易出错的地方就是指针了,一旦使用不当,轻则造成内存泄漏,重则造成系统 崩溃.不过系统为我们提供了智能指针,避免出现上述问题,本文将系统地分析Android系统智能指针(轻量级指针.强…
前言 混合式开发,在产品体验以及页面加载速度的体验上已经非比以往的.今日早读文章由@unclechen分享. 正文从这开始- 一.背景 现在的App开发,或多或少都会用到Hybrid模式,到了WebView这边,经常会加载一些js文件(例如和WebView用来Native通信的bridge.js),而这些js文件不会经常发生变化,所以我们希望js在WebView里面加载一次之后,如果js没有发生变化,下次就不用再发起网络请求去加载,从而减少流量和资源的占用.那么有什么方式可以达到这个目的呢?先得…
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态.然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提供的以下三个方法对状态进行操作: java.util.concurrent.locks.Abstra…
现在Android系统的root破解基本上成为大家的必备技能!网上也有很多中一键破解的软件,使root破解越来越容易.但是你思考过root破解的 原理吗?root破解的本质是什么呢?难道是利用了Linux kernal的漏洞吗?本文将简单对root的破解原理进行分析. 网上有一篇文章已经对root破解的基本原理进行了简单介绍,大家可以先参考一下<android root权限破解分析>,本文只能说对root原理进行了方向性的描述,但是在一些具体的方面没有描述清楚.本文将会对其进行一些必要的扩展和…
说明.文章摘自:SPI协议及其工作原理分析 http://blog.csdn.net/skyflying2012/article/details/11710801 一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块…
Handler MessageQueue Looper消息循环原理分析   Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler来投递消息到主线程执行UI更新操作.因为Android系统的View是非线程安全的,所以需要在主线程更新UI.总的来说Handler就是用来做线程间通信,在不同线程之间传递消息.注:这篇文章所讲到的Handler是在主线程创建的,主线程在开始的时候已经创建了默认的消息循环.后面的文章会讲如何创建自己…
AIDL (Android Interface Definition Language),通过定义通信接口来实现进程间通信.这是Google提供的一种在安卓应用进程间通信的工具.所以要了解AIDL的通信原理,我们需要围绕以下两个问题来展开. 1.为什么需要AIDL? 我们都知道AIDL的目的是进行进程间通信.所以在了解AIDL原理之前先要了解一下什么叫进程间通信.进程间通信涉及到两个名词,一个是进程间,一个是通信.进程间就是两个或多个进程之间,所以这里先要明确一个概念,进程间通信涉及到多个实体.…
我为什么写Handler,原因主要还在于它在整个 Android 应用层面非常之关键,他是线程间相互通信的主要手段.最为常用的是其他线程通过Handler向主线程发送消息,更新主线程UI. 下面是一个最简单的例子. import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.MessageQueue; import android.support.v7.app.…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6967204 在Android系统中,不同的应用程序是不能直接读写对方的数据文件的,如果它们想共享数据的话,只能通过 Content Provider组件来实现.那么,Content Provider组件又是如何突破应用程序边界权限控制来实现在不同的应用程序之间共享数据的呢?在前面的文章中,我们已经简要介绍过它是通过 Binder进程间通信机制以…
简介 提供了一个基于FIFO队列,可以用于构建锁或者其他相关同步装置的基础框架.该同步器(以下简称同步器)利用了一个int来表示状态,期望它能够成为实现大部分同步需求的基础.使用的方法是继承,子类通过继承同步器并需要实现它的方法来管理其状态,管理的方式就是通过类似acquire和release的方式来操纵状态.然而多线程环境中对状态的操纵必须确保原子性,因此子类对于状态的把握,需要使用这个同步器提供的以下三个方法对状态进行操作: java.util.concurrent.locks.Abstra…
前言 介绍 NetMQ是ZeroMQ的C#移植版本,它是对标准socket接口的扩展.它提供了一种异步消息队列,多消息模式,消息过滤(订阅),对多种传输协议的无缝访问. 当前有2个版本正在维护,版本3最新版为3.3.4,版本4最新版本为4.0.0-rc5.本文档使用4.0.0-rc5进行开发. zeromq的英文文档 netmq的英文文档 目的 对NetMQ的源码进行学习并分析理解,因此写下该系列文章,本系列文章暂定编写计划如下: 消息队列NetMQ 原理分析1-Context和ZObject…
消息队列NetMQ 原理分析2-IO线程和完成端口 前言 介绍 目的 IO线程 初始化IO线程 Proactor 启动Procator线程轮询 处理socket 获取超时时间 从完成端口获取处理完的状态 开始处理待处理的状态 IOObject 总结 前言 介绍 [NetMQ](https://github.com/zeromq/netmq.git)是ZeroMQ的C#移植版本,它是对标准socket接口的扩展.它提供了一种异步消息队列,多消息模式,消息过滤(订阅),对多种传输协议的无缝访问. 当…
common-pool: 对于一些对象的频繁创建会带来很大的系统开销,并且需要对对象数量进行控制来降低资源消耗,比如数据库连接,线程等 common-pool采用了缓存思想来解决这个问题,预先把一些对象资源创建好并统一保存起来,也就是保存到逻辑上的对象池中 等到需要对象时从池中直接获取,不需要时归还到池中 目前对象池技术已经有很多开源优秀的库了,比如:Java实现的Apache Commons Pool.Go Commons Pool go-common-pool就是参照Apache Commo…
老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结   本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事件源来阐述学习Monkey是如何处理MonkeyRunner过来的命令的.以下总结下MonkeyRunner从启动Monkey开始到如何处理完成一个命令的流程总结如下: MonkeyRunner通过ADB发送shell命令”monkey --port 12345”来启动Monkey Monkey启动运行进入r…
老李推荐:第6章2节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-获取命令字串   从上一节的描述可以知道,MonkeyRunner发送给Monkey的命令是以字符串的形式交互的,那么事件处理的第一步当然是先去获得MonkeyRunner发送过来的字串命令了. 在事件源MonkeySourceNetwork初始化的时候构造函数会创建一个ServerSocket来监听来自客户端的链接和数据,但这个时候客户端并不能真正实现和服务端通信,因为该ServerSocket…
老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 本节我们先看下Monkey是怎么启动起来的.在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个”monkey -port 1…
老李推荐:第5章2节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动流程概览   每个应用都会有一个入口方法来供操作系统调用执行,Monkey这个应用的入口方法就是在Monkey.java这个类里面的,也就是说Monkey.java就是整个Monkey应用的入口类. Monkey作为一个命令行应用,启动的过程中必然会去把命令行参数给解析出来:同时作为一个MonkeyRunner的服务,在启动完成后,很自然就能想到它必然会循环去等待获取主机发过来的命令.这些都不难理解,…
老李推荐:第5章1节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 官方简介   在MonkeyRunner的框架中,Monkey是作为一个服务来接受来自MonkeyRunner客户端发送过来的命令,然后针对每条命令请求进行相应的处理,所以它并不是作为一个随机压力测试的工具来运作.本书中的Monkey原理描述也不会把重点放在其作为压力测试工具这个方面,而是主要放在它是怎么作为MonkeyRunner的一个服务上.我相信这样已经足够了,因为这两种不同的运行方式只是事件的来源…
非对称加密技术,在现在网络中,有非常广泛应用.加密技术更是数字货币的基础. 所谓非对称,就是指该算法需要一对密钥,使用其中一个(公钥)加密,则需要用另一个(私钥)才能解密. 但是对于其原理大部分同学应该都是一知半解,今天就来分析下经典的非对称加密算法 - RSA算法. 通过本文的分析,可以更好的理解非对称加密原理,可以让我们更好的使用非对称加密技术. 题外话: 并博客一直有打算写一系列文章通俗的密码学,昨天给站点上https, 因其中使用了RSA算法,就查了一下,发现现在网上介绍RSA算法的文章…
AIDL使用以及IPC原理分析(进程间通信) 概要 为了大家能够更好的理解android的进程间通信原理,以下将会从以下几个方面讲解跨进程通讯信: 1. 必要了解的概念 2. 为什么要使用aidl进程间通信 3. 可能遇到的问题以及解决办法 4. aidl的使用,通过android提供的aidl实现一个进程间通信 5. 不使用aidl,手动编写Binder实现进程间通信 6. 分析aidl的原理,梳理andriod进程间通信相关知识 我们从Android对aidl文件自动生成的java类中可以看…
/********************************************************************** * AT24C0X I2C通信原理 * 说明: * 之前接触AT24C02用的相对比较多,这次接触到AT24C08,存储量大了 * 数据存储方式也就不一样,另外就是之前在Linux下面有标准AT24系列驱动, * 目前的FPGA需要编写操作PCIe控制I2C Master驱动,对EEPROM进行存取操作. * * 2018-11-7 深圳 宝安西乡 曾剑…
前言 本文主要从 select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始.   Netty 的通信原理 Netty 底层的通信机制是基于I/O多路复用模型构建的,简单一句话概括就是多路网络连接可以复用一个I/O线程,在 Java 层面也就是封装了其 NIO API,但是 JDK 底层基于 Linux 的 epoll 机制实现(其实是三个函数).注意在老旧的 Linux 上,可能还是 select,没考证过,但是时下主…
Hadoop生态圈-Zookeeper的工作原理分析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   无论是是Kafka集群,还是producer和consumer都依赖于Zookeeper集群保存一些mate信息,来保证系统可用性!这个特点会产生一个现象,即会产生大量的网络IO,所以说在企业生产环境中会单独开3到5台集群,这三台集群什么都不干,只开Zookeeper集群.所以说Zookeeper开放的节点一定要开网络监控告警,这是一个大数据运维的基本功! 一.Zookee…
ADB基本命令和简介 ADB就是Android Debug Bridge,Android调试桥的意思,很形象.需要在电脑上安装SDK Platform Tools 对应的版本才能使用 基于ADB的工具: DDMS ,monkey 测试 测试人员熟知的ADB相关命令有 adb devices / adb shell "dumpsys  meminfo,cpuinfo"/ adb push/ adb pull /adb install / adb uninstall 等等 那么adb到底是…