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 ...
随机推荐
- 保垒机SSH登录脚本
线上服务器一般都会有一个保垒机,我们登录线上服务器的时候都要通过这个堡垒机来实现登录,这样我们就要维护很多线上服务器的ip,很麻烦. 所以写了一个脚本用来便捷的登录各个服务器,可以把这个脚本放到跳板机 ...
- 【USACO 1.1.4】破碎的项链
[题目描述] 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的.这里是 n=29 的二个例子: 1 2 ...
- HDU 4632 CF 245H 区间DP(回文)
先说HDU 4632这道题,因为比较简单,题意就是给你一个字符串,然后给你一个区间,叫你输出区间内所有的回文子序列,注意是回文子序列,不是回文字串. 用dp[i][j]表示区间[i,j]内的回文子序列 ...
- 34 Search for a Range(目标数的范围Medium)
题目意思:递增数组,找到目标数的范围,找不到则返回[-1,-1] 思路:折半查找 class Solution { public: vector<int> searchRange(vect ...
- IIS的安装与配置详细图解教程。
一.这里讲的是在WINDOWS 2003下的IIS组件的安装,至于WINDOWS XP,请看这里: 开始-控制面板-添加或删除程序-添加/删除windows组件 勾选应用程序服务器 勾选I ...
- Qt Quick分组属性案例
import QtQuick 2.4 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4 import QtQuick.Win ...
- yo angualr-fullstatck 项目打包部署
yoeman使用grunt进行打包部署,直接运行grunt命令即可,期间会对代码进行检查,如果存在不规范的地方jshint会指定出来. grunt会对静态资源进行打包而且对资源文件名进行了MD5作为版 ...
- Windows系统编程之进程间通信
Windows系统编程之进程间通信作者:北极星2003来源:看雪论坛(www.pediy.com)Windows 的IPC(进程间通信)机制主要是异步管道和命名管道.(至于其他的IPC方式,例如内存映 ...
- 7.1.1.关闭WebSocket连接
7.1.定义 7.1.1.关闭WebSocket连接 为_关闭WebSocket连接_,端点需关闭底层TCP连接.端点应该使用一个方法完全地关闭TCP连接,以及TLS会话,如果合适,丢弃任何可能已经接 ...
- Markdown和reStructuredText语法比较
reStructuredText在线编辑器 http://rst.ninjs.org/ ReST是Docutils的标记语法,Docutils是Python世界的文档工具集.也因为这样ReST在Pyt ...