手机作为一种通讯终端(MMS),伴随着网络的升级而不断的升级换代。1995年1G问世,手机只能进行基本的语音通讯,1996-1997年2G(GSM,CDMA)及其后的GPRS,EDGE等技术的快速发展,手机开始逐渐增加了数据服务功能。2009年开始,3G在全世界开始大规模布置以及苹果创造性开发新型苹果手机。手机慢慢的变成互联网的终端,从而带动了一个新的时代--移动互联网时代。因此现代手机通常都支持这些常用网络设备,如WIFI,NFC,蓝牙等。Android是由互联网巨头Google带头开发的,因此对网络功能的支持是必不可少的。Google的应用层采用的是Java语言。所以JAVA支持的网络编程方式Android都支持,同时Google还引入了Apache的HTTP扩展包。另外,针对WIFI,NFC,分别提供的单独的开发API.表1展示了AndroidSDK中的一些与网络有关的API包名表1.AndroidSDK网络包包描述APILevelJava.net提供与联网有关的类,包括流和数据包(datagram)sockets、Internet协议和常见HTTP处理。该包是一个多功能网络资源。有经验的Java开发人员可以立即使用这个熟悉的包创建应用程序。1java.io虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他Java包中提供的socket和连接使用。它们还用于与本地文件(在与网络进行交互时会经常出现)的交互1java.nio包含表示特定数据类型的缓冲区的类。适合用于两个基于Java语言的端点之间的通信。1org.apache.*表示许多为HTTP通信提供精确控制和功能的包。可以将Apache视为流行的开源Web服务器。1android.net除核心java.net.*类以外,包含额外的网络访问socket。该包包括URI类,后者频繁用于Android应用程序开发,而不仅仅是传统的联网方面。1android.net.http包含处理SSL证书的类。1android.net.wifi包含在Android平台上管理有关WiFi(802.11无线Ethernet)所有方面的类。1android.telephony.gsm包含用于管理和发送SMS(文本)消息的类。一段时间后,可能会引入额外的包来来为非GSM网络提供类似的功能,比如CDMA或android.telephony.cdma等网络。1Android.net.sip包含Andriod平台上管理有关SIP协议如建立和回应Voip的类9Android.nfc包含所有用来管理近场通信相关的功能类9在Android中几种网络编程的方式:(1)针对TCP/IP的Socket、ServerSocket(2)针对UDP的DatagramSocket、DatagramPackage。这里需要注意的是,考虑到Android设备通常是手持终端,IP都是随着上网进行分配的。不是固定的。因此开发也是有一点与普通互联网应用有所差异的。(3)针对直接URL的HttpURLConnection(4)Google集成了ApacheHTTP客户端,可使用HTTP进行网络编程。针对HTTP,Google集成了AppacheHttpcore和httpclient4版本,因此特别注意Android不支持httpclient3.x系列,而且目前并不支持Multipart(MIME),需要自行添加httpmime.jar(5)使用WebService。Android可以通过开源包如jackson去支持Xmlrpc和Jsonrpc,另外也可以用Ksoap2去实现Webservice(6)直接使用WebView视图组件显示网页。基于WebView进行开发,Google已经提供了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。一、我们先来看第一种,针对TCP/IPSocket、ServerSocket的形式。TCP/IP是一种协议,是一种面向连接的、可靠的协议。Socket仅仅是对TCP、UDP网络接口的封装,不涉及上层协议。TCP、UDP传输特性不同,分别适用于不同类型的应用层协议,其中TCP有连接,延时较长,能保证服务质量;UDP无连接,需要应用程序进行数据分包、延时短,效率高,数据包可能丢失或到达对端发生顺序混乱。在Socket之上可以实现这些RFC标准的应用层协议,也可以自定义实现私有的应用层协议。在JAVA编程中,经常使用java.net和javax.net包来开发socket程序,下面列出所有常用的类,并简单介绍。关于详细的信息请参看JAVA文档。Java.netJava.net.Socket客户端连接使用的TCPsocketJava.net.DatagramSocket客户端和服务端共同使用的UDPsocketJava.net.ServerSocket服务端TCPsocket监听端口Java.netInetAddressIP地址封装类Java.net.DataGramPacket通过DatagramSocket收发的数据包的封装类,包括数据和对端的IP地址、UDP端口Javax.netJavax...