`
xiaoheliushuiya
  • 浏览: 416094 次
文章分类
社区版块
存档分类
最新评论

Android 网络编程 记录

 
阅读更多
简介

看了深入理解Android网络编程感觉不错,今天对Android网络编程进行了要点记录。


内容

Android基于网络技术和编程实践

要点 定义 描述



IP协议
用于报文交换网络的一种面向数据的协议
TCP协议 传输控制协议,传输层通信协议。
UDP协议 用户数据报协议,传输层协议。
SMTP协议 简单邮件传输协议
SOCKET 套接字 应用层与TCP/IP协议族通信的中间软件抽象层。 类型有两种:TCP套接字和UDP套接字。
TCP套接字 在保证可靠性上,采用超时重传和捎带确认机制,在流量控制上,采用滑动窗口协议;在拥塞控制上,采用慢启动算法。
UDP套接字 将网络数据流量压缩成数据包的形式。
FTP协议 文件传输协议,传输协议的应用层。 可直接操作Apache的包
Telnet协议 远程登陆服务的标准协议 可直接操作Apache的包
C++和JAVA 套接字的区别 Socket是Winsock里的原始套接字开发接口Api。 1、接口不同,java本身无socket通讯底层实现,而是调用系统底层的winsock api二次封装;C++更接近系统层面的winsock,可以进行更多的底层扩展和控制。
2、java开发出来的可以在支持java虚拟机上运行。
UDP和TCP区别 1、tcp可靠,udp不可靠
2、tcp支持的应用协议有:telnet,ftp,smtp,tcp可用户传输数据量大
3、udp支持的应用协议:nfs(网络文件系统),snmp(简单网络管理系统),dns(主域名称系统),tftp通用文件传输协议等,用户传输数据量少。
4、tcp是java.net.ServerSocket(用于服务器端)和java.net.Socket(用于客户端);UDP是java.net.DatagramSocket。
5、流模式与数据报模式:TCP保证数据正确性,UDP可能丢包;TCP 保证数据顺序,UDP不保证。


Android基本Web技术和编程实践

要点 定义 描述
HTTP协议 分布式超媒体信息系统的应用层协议。
http://主机[":"端口][路径]
特点:
1、支持C/S模式
2、简单快速
3、灵活
4、无连接
5、无状态
两类报文:请求报文,响应报文。
HTTP编程
支持的功能有:自动转向、https协议、代理服务器,方法(get、post、put、head、opption、connect)
实现:数据请求,数据上传,数据删除等操作。
可操作的类:HttpClient和URLConnection。
JSON JavaScript对象表示法,轻量级的文本数据交换格式。 可操作的类:
JSONObject、JSonArray、JSONArray、JSONTokener、JSONStringer。
SOAP 简单对象访问协议,应用层协议。 包含的元素:Envelope、Header、Body、Fault。
HTML 超文本标记语言 解析Html文档的方法有:
1、正则表达式
2、字符串定位
3、HTML Parser解析器
4、Jsoup解析器
如何加密? 数据传输可添加某加密算法进行加密 加密算法有:自定义位移(其它)、MD5(不可逆)、对称加密(DES、AES)、非对称加密(RSA)
可引入crypto包。

Android常见网络接口编程

要点 定义 描述
XML 扩展性标记语音 使用XmlSerializer创建XML文件
DOM解析 一种解析XML的方式,特点:将XML文件的所有内容以文档树的方式存放在内存中,然后用户使用DOM API遍历XML树、检索所需的数据。 所需的类:
DocumentBuilderFactory、Document、Element、NodeList.
SAX解析 一种解析XML的方式,特点:基于事件驱动,边加载边解析。 所需的类:
XMLReader、ContentHandler、DTDHandler、ErrorHandler、EntityResolver
PULL解析 同上
RSS 简易信息聚合,一种描述和同步网站内容的格式。订阅:博客、新闻。
Email编程 顾名思义:发送邮件。 1、使用系统自带的邮件服务。
2、采用javamail功能包进行发送邮件。
加解密 加密是通过加密算法和加密密钥将明文转变为密文的过程,解密相反。 1、Base64加密(字符表示二进制数据)
2、DES 是数据加密标准
3、AES是高级加密标准
4、MD5使用确保信息传输完整性
OAuth认证 一个开放标准,允许用户第三方使用。 四个步骤:
1、获取未授权的请求token
2、获取用户授权的请求token
3、用授权的请求token换认证token
4、使用认证token访问
DOM和SAX的区别 加载方式不同,DOM一次性加载全部内容,SAX边加载边读取。


Android网络模块编程

要点 定义 描述
USB编程 通用串行总线,一种主从结构。 涉及的类:
UsbManager、UsbAccessory、UsbDevice、UsbEndpoint
WIFI编程 802.11b标准,无线通信的工业标准,特点:速度快、可靠、距离远。
wifi直连技术是通过wifi直接互通。
相关类:WirelessSettings、WifiSettings、AccessPointDialog、WifiEnabler、WifiLayer、WifiManager、WifiState、WifiService、WifiMonitor、WifiNativie、ScanResult、WifiInfo、wifiConfiguration。
用户角度看五层:硬件驱动程序、wpa_supplicant、JNI、Wifi Api、WifiSettings应用程序。
直连涉及的类:WifiP2pManager
蓝牙编程 一种支持设备短距离通信的无线技术 涉及的类:BluetoothAdapter、BluetoothDevice、BluetoothSocket
NFC编程 近距离无线通信的技术,3种工作模式:主动、被动、双向。应用:接触通过、接触支付、接触连接、接触浏览。 涉及的类:NfcAdapter、NdefMessage、NdefRecord

基于Sip协议的Voip应用

要点 定义 描述
sip协议 会话发起协议,用于建立、修改和终止包括视频、语音、即时通信、在线游戏和虚拟现实等多媒体元素在内的交互会话。 应用层的信令控制协议。
使用什么协议传输的? UDP协议和TCP协议
H.323协议和SIp协议的比较 1、H.323采用ASN.1和压缩编码规则的二进制方法表示其消息,sip基于文本协议。
2、h.323由多点控制单元,所有终端都向mcu发送控制消息;sip是分布式的呼叫模型,具备组播功能。
sip会话的构成? 四个组件:
1、SIP用户代理(终端设备)
2、SIP注册服务器(包含域中所有用户代理的位置的数据库)
3、SIP代理服务器(接口UA的会话请求并查询SIP注册服务器,获取收件方UA的地址信息)
4、SIP重定向服务器(允许Sip代理服务器讲sip会话邀请信息定向到外部域)

基于XMPP协议的即时通信

要点 定义 描述
XMPP协议 可扩展消息处理现场协议 一种以xml为基础的开放式实时通信协议。
Android的XMPP客户端地址 http://asmack.freakempire.de/


Android对HTML的处理

要点 定义 描述
HTML处理关键类 Android HTML处理关键类在源码frameworks/base/core/java/android/webkit目录下
关键类以及描述 1、AccessibilityInjector 为WebView注入可以访问的javaScript和其相关内容。
2、AutoCompletePopup 根据输入内容自动不全
3、BrowserFrame 对WebCore中Frame对象的java层封装。
4、CacheManager Cache管理对象。
5、CallbackProxy 处理WebCore与UI线程消息的代理类
6、CerTool WebView证书工具
7、ClientCerRequestHandler 处理客户端证书请求
8、ConsoleMessage javaScript控制台消息
9、Cookiemanager Cookies管理对象
10、CookieManagerClassic Cookiemanager 扩展实现类
11、CookieSyncManager Cookies同步管理对象,负责同步RAM和FLASH之间的Cookies数据。
12、DataSorter 日期排序
13、DebugFlags 调试标志
14、DevicemotionAndOrientationManager 实现DeviceMotion和DeviceOrientation
15、DeviceMotionService 实现SensorEventListener接口,处理方向变化。
16、Downloadlistener 下载监听
17、FindActionModeCallback 搜索动作回调
18、GeolocationPermissions WebView的地理位置JavaScript Api的权限管理
19、GeolocationPermissionsClassic GeolocationPermissions 扩展类,处理UI线程中调用的WebKit线程。
20、GeolocationService 封装位置监听。
21、HTML5Audio 音频支持类
22、HTML5VideoFullScreen 全屏视频视图
23、HTML5VideoInline 内嵌视频视图
24、HTML5VideoView 浏览器视频视图
25、HTML5VideoViewProxy 视频视图处理类
26、HttpAuthHandler 处理http认证请求
27、JWebCoreJavaBridge 用于java与webcore库中timer和Cookies对象交互的桥接
28、JniUtil JNI使用的实用类,用于获取cache目录等C代码无法直接获取的信息、以及读取资源包中的文件。
29、JsPromptResult js结果提示,提示javascript运行结果。
30、JsResult js结果,用户交互。
31、KeyStoreHandler 负责证书安装到系统密钥存储区,从网络读取证书传给CertTool。
32、L10nUtils 负责字符串国际化
33、MimeTypeMap MIME类型映射
34、MockGeolocation 模拟地理位置信息
36、MustOverrideException 扩展运行时错误
37、OverScrollGlow 用于实现OverScroller结果
38、Plugin 定义插件的类
39、PluginData 插件数据
40、PluginFullScreenHolder 获取插件视图的容器的大小,负责显示等操作。
41、PluginList 维护插件列表
42、PluginManager 插件管理类
43、PluginStub WebView的实现插件的接口
44、QuadF 定义一个四边形
45、SearchBox 搜索对话框接口
46、SearchBoxImpl 搜索对话框接口实现
47、SelectActionModeCallback 选择动作回调
48、SslCertLookupTable 存储用户是否使用一个证书的决定
49、SslClientCertLookupTable 保存客户端证书的用户选择
50、SslErrorHandler 处理SSL错误
51、URLUtil URL使用处理类
52、valueCallback 异步返回数据值的回调接口
53、ViewManager 视图管理类,管理插件视图
54、ViewStateSerializer WebView视图序列化和反序列化
55、WebBackForwardList WebView对象中显示的历史数据列表
56、WebBackForwardListClient 浏览历史处理的客户端接口
57、WebChromeClient Chrome客户端
58、WebCoreThreadWatchdog WebCore看门狗
59、WebHistoryItem 一条网页数据
60、WebIconDatabase 图标数据库管理对象
61、WebIconDatabaseClassic WebIconDatabase 扩展类
62、WebResourceResponse 封装资源的响应信息
63、WebSettings WebView的管理设置数据,通过JNI接口从底层获取。
64、WebStorage 数据库
65、WebSyncManager 数据同步管理对象,用于RAM数据和FLASH数据的同步操作。
66、WebTextView 在HTML文本输入控件激活时显示系统原生编辑组件。
67、WebView 视图对象
68、WebViewClient Web视图客户对象,在web视图中有事件产生时,该对象获得通知。
69、WebViewDatabase 数据库
70、WebViewFactory WebView嵌入Fragment中。
71、WebViewFragment ebView嵌入Fragment中。
72、ZoomControlBase 缩放控件接口。
73、ZoomControlEmbedded 内置缩放控件。
74、ZoomManager 维护WebView的缩放状态。


Android 网络处理分析

要点 定义 描述
网络处理关键类 Android HTML网络处理关键类在源码frameworks/base/core/java/android/net目录下
关键类以及描述 1、ConnectivityManager 用于查询网络连接的状态。
2、Credentials UNIX身份信息
3、DhcpInfo 一个Dhcp请求结果的对象
4、LocalServerSocket 创建下行unix域套接字的非标准类
5、LocalSocket 在unix域命名空间创建一个非服务器socket
6、LocalSocketAddress socket地址
7、MailTo 解析mailto协议格式的url
8、NetworkInfo 描述网络接口状态
9、Proxy 访问用户及默认代理设置的类
10、SSLCertificateSocketFactory 实现了ssl操作的额外细节
11、SSLSessionCache ssl会话缓存
12、TrafficStats 网络流量统计
13、Uri 一个不可变的url引用
14、Uri.Builder 创建url引用的辅助类
15、UrlQuerySanitizer 过滤url查询
16、UrlQuerySanitizer.IllegalCharacterValueSanitizer 用它们包含的字符过滤非法值
17、UrlQuerySanitizer.ParameterValuePair 参数值对的简单元组
18、VpnService 应用扩展和建立自己的vpn解决方案的基类
19、VpnService.Builder 创建一个vpn接口的辅助类
Android封装的http处理类 1、AndroidHttpClient(本质上是Apache DefaultHttpClient类在Android上的实现)
2、DefaultHttpClient(一个Http客户端)
3、SSL认证信息处理类(SSL协议的实现与数字证书相关,涉及的类:SslCertificate、SslError)
1、AndroidHttpClient不能在主线程中执行,DefaultHttpClient在主线程中执行。
2、AndroidHttpClient通过静态方法newInstance获得实例,而DefaultHttpClient创建对象。
3、DefaultHttpClient默认启动Cookie,但默认不保留Cookie,如要保留需增加CookieStore到HttpContext中。
Android RTP协议 实时传输协议,用来为ip网络的语音、图像、传真等多种实时传输的多媒体数据提供端到端的实时传输服务。
RTP协议详细说明了传递音频和视频的标准数据包格式。
涉及的类:AudioCodec、AudioStream、AudioGroup、RtpStream。


总结

该书详细讲解了Android开发要点,并用源码案例进行了详细说明,使笔者从原理上加深对相关知识点的理解。


分享到:
评论

相关推荐

    Android网络编程-聊天室开发

    ### Android网络编程——聊天室开发 #### 一、概述 Android聊天室项目是基于Socket网络编程的一个典型应用案例。通过本项目的开发,开发者可以深入了解如何利用Android设备与服务器端进行通信,实现多人在线聊天的...

    从零开始Android游戏编程(第二版)PDF版

    9. **网络编程**:如果游戏需要在线功能,如多人对战或实时更新,那么网络编程知识就必不可少。Android提供了Socket编程接口,可以实现客户端-服务器通信。 10. **性能优化**:最后,优化游戏性能是确保游戏在各种...

    Android编程经典200例

    4. **网络编程** - HTTP请求:使用HttpURLConnection或OkHttp发送GET、POST请求,处理响应。 - JSON解析:利用Gson或Jackson库将JSON数据转换为Java对象。 - AsyncTask和Loader:异步处理网络请求,避免阻塞主线...

    android http协议 网络编程 经典完整代码

    首先,我们需要了解Android网络操作的基本原则。由于Android的安全策略,所有网络操作必须在非UI线程中执行,以防止阻塞主线程导致应用无响应。因此,我们通常会使用`AsyncTask`、`Thread`或`Handler`等异步处理机制...

    android行车记录仪直播

    综上所述,开发一个"android行车记录仪直播"应用是一个综合性的任务,涵盖了Android编程、实时流媒体技术、设备接口交互、数据管理和服务器端处理等多个方面的知识。每个环节都需要精心设计和实现,以提供流畅、安全...

    Android高级编程.pdf 高清下载

    网络编程与HTTP协议 在网络连接方面,熟悉HTTP/HTTPS协议,能够使用Retrofit、OkHttp等库进行网络请求,处理JSON/XML数据格式,实现数据的同步和异步传输,是高级开发者必备技能。 #### 6. Material Design ...

    Android系统应用开发 实验五 网络通信 实验报告

    在Android系统应用开发中,网络通信是至关重要的一个环节,特别是在构建交互性强的应用时。...通过这样的实践,学生不仅能够了解Android网络通信的原理,还能掌握实际应用中的关键技术和最佳实践。

    android网络测速app源代码

    总的来说,开发这样一个Android网络测速App涵盖了Android应用开发的多个方面,包括网络编程、数据库操作、文件处理、地理位置服务、UI设计、权限管理、多线程、数据可视化以及异常处理等,对于Android开发者来说是一...

    Android键盘记录器的源文件

    5. **网络通信**:如果键盘记录器需要将数据发送到远程服务器,那么会涉及网络编程,如HTTP请求的实现,可能使用了OkHttp、Volley等网络库。 6. **安全措施**:合法的键盘记录器通常会包含一些安全措施,如加密存储...

    Android 网络监视器源码

    学习和使用这个源码可以帮助你深入理解Android网络编程,尤其是视频流处理的细节。你可以从以下几个方面入手: - 分析源码结构,了解其模块划分和组件间的交互。 - 阅读网络拦截器的实现,理解如何捕获和分析网络...

    Android高效编程经典

    开发者应学会使用Android Studio内置的Profiler工具,监测CPU、内存、网络和GPU的使用情况。此外,分析器如Systrace和Traceview能提供深入的系统调用和方法执行时间的洞察,帮助优化代码执行效率。 压缩包中的...

    Android个人消费记录管理系统

    7. **技术栈**:列举了所使用的开发工具(如Android Studio)、编程语言(Java或Kotlin)、第三方库(如Retrofit、Gson、Room等)。 从压缩包的文件名"08110250105仇菲"来看,这可能是项目开发者的姓名和编号,或者...

    Android 4游戏编程入门经典

    ### Android 4游戏编程入门经典知识点总结 #### 一、书籍概述 《Android 4游戏编程入门经典》这本书是为那些希望在Android平台上开发游戏的新手准备的全面指南。本书覆盖了从Android基础知识到游戏开发高级技巧的...

    android个人消费记录软件-拖控件作品

    1. **Android编程语言**:由于是Android应用,所以主要使用Java或Kotlin作为编程语言,这两种语言都是Android Studio的首选。 2. **布局设计与拖放功能**:应用可能使用了自定义View或 ViewGroup实现拖放功能,这...

    Android网络开发技术实战详解(文字版)

    这本书以详实的记录和丰富的内容为特点,不仅覆盖了网络通信的基础知识,还深入到底层机制,让开发者能够从理论到实践全面掌握Android网络开发。 网络基础是任何Android应用开发的重要组成部分,本书首先会介绍网络...

    Android-for-Xinlang.rar_android_android 网络_android新浪微博_android网络

    本资源“Android-for-Xinlang.rar”专注于讲解如何在Android环境中构建一个简版的新浪微博客户端,涵盖了一系列关键的Android网络编程技术。以下是相关的知识点详解: 1. **Android SDK与环境搭建**:首先,你需要...

    Android-NetworkObserver--极简可实时监控网络状态兼容至Android9.0

    这对于提升个人的Android网络编程技能大有裨益。 总之,Android-NetworkObserver是一个强大且实用的工具,它简化了Android应用中的网络状态监控,使得开发者可以更专注于应用的核心功能开发,同时确保了在网络状态...

    Android-一个简单的Android网络下载器

    首先,我们要了解Android的网络编程基础。在Android中,通常使用HttpURLConnection或OkHttp库来处理HTTP请求。这两个库允许我们发送GET、POST等请求,接收响应,并处理下载的数据流。对于多任务下载,我们需要创建一...

Global site tag (gtag.js) - Google Analytics