Android 网络编程与通信协议
大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,
HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。
一 : 首先来看一下Android下提供的网络访问相关API
a) java.net.*(标准的Java接口):包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。HttpURLConnection就是这个包下的。
b) org.apache.HttpClient: Appache提供的开源包,弥补了 java.net.* 灵活性不足的缺点,DefaultHttpClient是其具体实现类。
c) android.net(android接口):也是HttpClient的实现,提供了android下的特有网络编程。如:访问WiFi,访问Android联网信息,邮件等功能。
二: Which client is best?
Google官方文档介绍,在2.3及以后的版本中,HttpURLConnection是最好的选择,它简单的api以及轻量级非常适合Android。压缩和缓存机制降低了网路使用,提高了速度、节省了电量。新的应用应该选择使用HttpURLConnection,但在2.2之前有bug。
但是在 链接管理 和 线程安全方面。HttpClient任然具有很大优势,其提供了大量的可扩展的稳定的APIs,但是在不破坏其兼容性的前提下 很难对其诸多API 进行修改,升级和扩展。 Google对其的优化并不积极,一般用于android2.2及以下版本中。
三: 网络协议
网络七层 , 一般编程人员接触最多的就是应用层和运输层。
OSI中的层
层级功能
TCP/IP协议族
应用层
文件传输,电子邮件,文件服务,虚拟终端
TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
表示层
数据格式化,代码转换,数据加密
会话层
解除或建立与别的接点的联系
传输层
提供端对端的接口
TCP,UDP
网络层
为数据包选择路由
IP,ICMP,RIP,OSPF,BGP,IGMP
数据链路层
传输有地址的帧以及错误检测功能
SLIP,CSLIP,PPP,ARP,RARP,MTU
物理层
以二进制数据形式在物理媒体上传输数据
ISO2110,IEEE802。IEEE802.2
tcp 和udp是传输层协议 ,定义的是数据传输和连接方式的规范(面向连接,TCP三层握手)(UDP不可靠的协议).主要解决数据 如何在网络中传输
http 是应用层协议 ,定义的是传输数据的内容的规范(客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接).主要解决如何包装数据
Socket是一组抽象编程接口(API),Socket本身不算是协议。介于传输层和应用层,向应用层提供统一的编程接口。应用层不必了解TCP/IP协议细节。直接通过对Socket接口函数的调用完成数据在IP网络的传输。
基于TCP的Socket (HTTP)、基于UDP的Socket(SNMP)、基于RawIp的Socket(ping)、基于链路层的Socket
HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP
我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。
四 : 其它网络相关技术
1) WebView :HTML<------->javascript<-------->Android Java
2) Webservice :基于SOAP协议 ,简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议。
3) 服务器推送 :通过建立持久连接的方法,服务器端发送信息给手机Android用户。
——MQTT协议
——XMPP协议
——第三方推送 Android Push Notification Service
4) PhoneGap
Android 网络编程与通信协议的更多相关文章
- Android网络编程系列 一 TCP/IP协议族
在学习和使用Android网路编程时,我们接触的仅仅是上层协议和接口如Apache的httpclient或者Android自带的httpURlconnection等等.对于这些接口的底层实现我们也有必 ...
- Android 网络编程 记录
简单介绍 看了深入理解Android网络编程感觉不错.今天对Android网络编程进行了要点记录. 内容 Android基于网络技术和编程实践 要点 定义 描写叙述 IP协议 用于报文交换网络的一种面 ...
- Android网络编程只局域网传输文件
Android网络编程之局域网传输文件: 首先创建一个socket管理类,该类是传输文件的核心类,主要用来发送文件和接收文件 具体代码如下: package com.jiao.filesend; im ...
- Android网络编程基础
Android网络编程只TCP通信 TCP 服务器端工作的主要步骤如下.步骤1 调用ServerSocket(int port)创建一个ServerSocket,并绑定到指定端口上.步骤2 调用acc ...
- Android网络编程系列 一 Socket抽象层
在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽 ...
- Android 网络编程 Socket
1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...
- Android网络编程概述
Android网络编程概述 首先,应该了解的几个问题: 1)Android平台网络相关API接口 a) java.net.*(标准Java接口) java.net.*提供与联网有关的类,包括流.数据包 ...
- Android网络编程http派/申请服务
最近的研究Android网络编程知识,这里有一些想法,今晚学习.与您分享. 在实际的应用程序的开发非常需要时间appserver请求数据,那么app怎样发送请求呢?以下的代码就是当中的一种情况.使用H ...
- 转 Android网络编程之使用HttpClient批量上传文件 MultipartEntityBuilder
请尊重他人的劳动成果,转载请注明出处:Android网络编程之使用HttpClient批量上传文件 http://www.tuicool.com/articles/Y7reYb 我曾在<Andr ...
随机推荐
- 查看sql server数据库各表占用空间大小
exec sp_MSForEachTable @precommand=N' create table ##(id int identity,表名 sysname,字段数 int,记录数 int,保留空 ...
- POJ3185 The Water Bowls(反转法or dfs 爆搜)
POJ3185 The Water Bowls 题目大意: 奶牛有20只碗摆成一排,用鼻子顶某只碗的话,包括左右两只在内的一共三只碗会反向,现在给出碗的初始状态,问至少要用鼻子顶多少次才能使所有碗都朝 ...
- php小知识点
1.字符串可以里面的字符可以像数组一样访问,比如$s = "123";$s[1]就等于2,如果字符串为中文则会乱码,需要使用mb_substr进行截取: 2.php中的单引号(' ...
- javascript 计时器,消失计时器
var setId= setInterval(function () { alert('点我'); }, 1000); onload = function () { //消灭计时器 clearInte ...
- kill tomcat process in window
1.通过命令netstat -ano | findstr 8080找到tomcat所占用的process,如下图 2.执行ntsd -c q -p 7944 kill刚刚找到的process,然后 ...
- PHP 设计模式之观察者模式 (转载)
介绍 现在有两派,有的人建议使用设计模式,有的人不建议使用设计模式!这就向写文章一样,有的人喜欢文章按照套路走,比如叙事性质的文章,时间,地点,人物,事件.而有的人喜欢写杂文或者散文,有的人 ...
- jquery 与其他库冲突解决方案
var j = jQuery.noConflict(); j("div p").hide(); // 基于 jQuery 的代码 $("content").st ...
- Python3 如何优雅地使用正则表达式(详解一)
注:本文翻译自 Regular Expression HOWTO,小甲鱼童鞋对此做了一些注释和修改. 正则表达式介绍 正则表达式(Regular expressions 也称为 REs,或 regex ...
- Android之Activity生命周期简介
概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...
- 魅蓝3s adb interface 找不到驱动程序
完全照搬大神的步骤就ok啦,,自己记录下,方便以后查找 Win7 x64 Eclipse无法识别手机 / adb interface有黄色感叹号,无法识别 http://blog.csdn.net/z ...