码迷,mamicode.com
首页 > 移动开发 > 详细

Android中通信协议

时间:2016-11-09 22:59:26      阅读:331      评论:0      收藏:0      [点我收藏+]

标签:进制   理解   网络传输   编程   ice   不同   下载   独立   面向   

一、TCP/IP协议(传输层协议)

     1、Socket与ServerSocket

           Socket是应用层与TCP/IP协议簇通讯的中间抽象层,Socket是一组接口,在设计模式中,Socket的设计就是门面模式,它把复杂的TCP/IP协议簇的内容隐藏在套接字接口后面,用户无需关心协议的实现,只需使用Socket提供的接口即可。

           Socket的类型有两种,一种是面向连接的TCP应用服务,一种是面向无连接的UDP(User Data Package)应用服务。通俗的理解就是,TCP方式是打电话(连接性),UDP方式是发短信(无连接)。

           ServerSocket类,是用于监听计算机的指定端口处建立一个监听服务,正真传输数据的对象是socket对象。

           ServerSocket 一般仅用于设置端口号和监听,真正进行通信的是服务器端的Socket与客户端的Socket,在ServerSocket 进行accept之后,就将主动权转让了。

           详细请看:http://www.cnblogs.com/mareymarey111/archive/2011/12/08/2280253.html

二、UDP协议(传输层协议)

       UDP协议全称是用户数据报协议 ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

       UDP协议的主要作用是将网络数据流量压缩成数据包的形式。一个典型的数据包就是一个二进制数据的传输单位。每一个数据包的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。

       为了在给定的主机上能识别多个目的地址,同时允许多个应用程序在同一台主机上工作并能独立地进行数据包的发送和接收,设计用户数据报协议UDP。

       使用UDP协议包括:TFTP、SNMP、NFS、DNS、BOOTP

  UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能。

     1、DatagramSocket与DatagramPackage

          DatagramSocket代表UDP协议的Socket,DatagramSocket本身只是码头,不维护状态,不能产生IO流,它的唯一作用就是接收和发送数据报,

          详细解释请看:http://blog.csdn.net/jiangxinyu/article/details/8161044

          DatagramPacket来代表数据报,DatagramSocket接收和发送的数据都是通过DatagramPacket对象完成的。

          详细解释请看:http://blog.csdn.net/oney139/article/details/8063067

三、HTTP协议(应用层协议)

       HTTP协议是一种应用层协议,HTTP是HyperText Transfer Protocol(超文本传输协议)的英文缩写。HTTP可以通过传输层的TCP协议在客户端和服务器之间传输数据。HTTP协议主要用于Web浏览器和Web服务器之间的数据交换。我们在使用IE或Firefox浏览网页或下载Web资源时,通过在地址栏中输入http://host:port/path,开头的4个字母http就相当于通知浏览器使用HTTP协议来和host所确定的服务器进行通讯。  

       详细请看:http://blog.csdn.net/xijiaohuangcao/article/details/6729277

       在Android中使用JDK的HttpURLConnection和Apache的HttpClient访问网络资源

     1、HttpURLConnection

       Java 应用程序需要直接通过 HttpURLConnection类来访问指定url地址的网络资源,提供了post和get的方法。

       详情解释请看:http://blog.csdn.net/loovejava/article/details/12950129

     2、HttpClient(Google集成了Apache HTTP协议)

       Android中,androidSDK中集成了Apache的HttpClient模块,用来提供高效的、最新的、功能丰富的支持 HTTP 协议工具包,并且它支持 HTTP 协议最新的版本和建议。

       详情解释请看:http://blog.csdn.net/litton_van/article/details/6544086

       HttpURLConnection与httpClient的区别在于httpClient封装好了http协议请求的方法和模块,快速集成方便。详解:http://blog.csdn.net/micaixiaoduanku/article/details/39958615

三、Android调用webService通信

      Web Services(Web服务)是一个用于支持网络间不同机器互操作的软件系统,它是一种自包含、自描述和模块化的应用程序,它可以在网络中被描述、发布和调用,可以将它看作是基于网络的、分布式的模块化组件。
      Web Services是建立在通用协议的基础之上,如HTTP、SOAP、UDDI、WSDL等,这些协议在操作系统、编程语言和对象模型的选择上没有任何倾向,因此有着很强的生命力。
      Web Services的优势在于提供了不同应用程序平台之间的互操作,它使得基于组件的开发和Web相结合的效果达到最佳。它是基于HTTP协议的,调用请求和回应消息都可以穿过防火墙,不需要更改防火墙的设置,这样就避免了使用特殊端口进行通信时无法穿越防火墙的问题。

      简单的说:通过使用WebService,我们能够像调用本地方法一样去调用远程服务器上的方法。我们并不需要关心远程的那个方法是Java写的,还是PHP或C#写的;我们并不需要关心远程的方法是基于Unix平台,还是Windows平台,也就是说WebService与平台和语言无关。

     Android调用webservice主要有:SOAP协议和 WSDL协议

     1、SOAP协议

          SOAP(Simple Object Access Protocol,简单对象访问协议)是一种轻量级的、简单的、基于XML的协议,被设计用于在分布式环境中交换格式化和固化信息的简单协议。也就是说,要进行通信,进行数据访问传输,就必须依赖于一定的协议,而SOAP正是WebService通信中所依赖的一种协议。目前经常使用的SOAP协议有两个版本:SOAP 1.1 和 SOAP 1.2。

          注意的是:Android使用soap协议调用webservice的时候,调用的是服务器的方法,传的参数要按顺序传,配置的版本号也要正确,读者可自行参考详解做。见附件

          详细使用:http://blog.csdn.NET/long704480904/article/details/8636734          

     2、WSDL协议

           WSDL(Web Services Description Language,即Web服务描述语言)是一种用来描述Web服务的XML语言,它描述了Web服务的功能、接口、参数、返回值等,便于用户绑定和调用服务。它以一种和具体语言无关的方式定义了给定Web服务调用和应答的相关操作和消息。

           详细使用:http://blog.csdn.net/howlaa/article/details/21237331

四、Android使用webview调用服务器

       直接使用WebView视图组件显示网页。基于WebView 进行开发,Google已经提供了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。  

Android中通信协议

标签:进制   理解   网络传输   编程   ice   不同   下载   独立   面向   

原文地址:http://www.cnblogs.com/wuyudong/p/6048899.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!