《手机作为一种通讯终端知识点梳理汇总.docx》由会员分享,可在线阅读,更多相关《手机作为一种通讯终端知识点梳理汇总.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、手机作为一种通讯终端(MMS),伴随着网络的升级而不断的升级换代。1995年1G问世, 手机只能进行基本的语音通讯,1996-1997年2G (GSM,CDMA)及其后的GPRS, EDGE等 技术的快速发展,手机开始逐渐增加了数据服务功能。2009年开始,3G在全世界开始大规 模布置以及苹果创造性开发新型苹果手机。手机慢慢的变成互联网的终端,从而带动了一个 新的时代移动互联网时代。因此现代手机通常都支持这些常用网络设备,如WIFLNFC,蓝 牙等。Android是由互联网巨头Google带头开发的,因此对网络功能的支持是必不可少的。Google 的应用层采用的是Java语言。所以JAVA支持
2、的网络编程方式Android都支持,同时Google 还引入了 Apache的HTTP扩展包。另外,针对WIFI, NFC,分别提供的单独的开发API.表1展示了 Android SDK中的一些与网络有关的API包名 表1. Android SDK网络包 包描述API LevelJ提供与联网有关的类,包括流和数据包(datagram) sockets、Internet协议和常见HTTP处理。该包是一个多功能网络资源。有经验的Java开发人员 可以立即使用这个熟悉的包创建应用程序。1java.io虽然没有提供显式的联网功能,但是仍然非常重要。该包中的类由其他Java包中提供的socket和连接使
3、用。它们还用于与本地文件(在与网络进行交互 时会经常出现)的交互 1 java.nio包含表示特定数据类型的缓冲区的类。适合用于两个基于Java语言的端点之间的通信。1org.apache.* 表示许多为HTTP通信提供精确控制和功能的包。可以将Apache视 为流行的开源Web服务器。 1 除核心.*类以外,包含额外的网络访问socket。该包包括IIRI 类,后者频繁用于Android应用程序开发,而不仅仅是传统的联网方面。1.http包含处理SSL证书的类。 1.wifi包含在 Android 平台上管理有关 WiFi (802.11 无线 Ethernet)所有方面的类。 1 andr
4、oid.telephony.gsm包含用于管理和发送SMS (文本)消息的类。一段时间后,可能会引入额外的包来来为非GSM网络提供类似的功能,比如CDMA或 android.telephony.cdma 等网络。 1 A.sip 包含Andriod平台上管理有关SIP协议如建立和回应Voip的 类 9 Android.nfc包含所有用来管理近场通信相关的功能类9在Android中几种网络编程的方式:(1)针对 TCP/IP 的 Socket、 ServerSocket(2)针对 UDP 的 DatagramSocket DatagramPackageo这里需要注意的是,考虑到 Android
5、设备通常是手持终端JP都是随着上网进行分配的。不是固定的。因此开发也是有一点与普 通互联网应用有所差异的。(3)针对直接 URL 的 HttpURLConnection(4) Google集成了 Apache HTTP客户端,可使用HTTP进行网络编程。针对HTTP, Google 集成了 Appache Http core 和 httpclient 4 版本,因此特别注意 Android 不支持 httpclient 3.x系列,而且目前并不支持Multipart (MIME),需要自行添加httpmime.jar(5)使用Web Serviceo Android可以通过开源包如jackso
6、n去支持Xmlrpc和Jsonrpc,另 外也可以用Ksoap2去实现Webservice(6)直接使用WebView视图组件显示网页。基于WebView进行开发,Google已经提供 了一个基于chrome-lite的Web浏览器,直接就可以进行上网浏览网页。一、我们先来看第一种,针对TCP/IP Socket、Serversocket的形式。TCP/IP是一种协议,是一种面向连接的、可靠的协议。Socket仅仅是对TCP、UDP网络接 口的封装,不涉及上层协议。TCP、UDP传输特性不同,分别适用于不同类型的应用层协议, 其中TCP有连接,延时较长,能保证服务质量;UDP无连接,需要应用程
7、序进行数据分包、 延时短,效率高,数据包可能丢失或到达对端发生顺序混乱。在Socket之上可以实现这些 RFC标准的应用层协议,也可以自定义实现私有的应用层协议。在JAVA编程中,经常使用和包来开发socket程序,下面列出所有常用 的类,并简单介绍。关于详细的信息请参看JAVA文档。J客户端连接使用的TCP socketJava .net. Datag ra mSocketJava .net. ServerSocketJava .netlnetAddressJava .net.DataGra m Packet和对端的IP地址、UDP端口客户端和服务端共同使用的UDP socket 服务端TC
8、P socket监听端口IP地址封装类J通过Datagramsocket收发的数据包的封装类,包括数据客户端连接使用的T CP socket 服务端TCP socket监听端口 SSL客户端Socket构造器 SSL服务端监听Socket构造器示例代码:android+socket编程实例.rar 二、针对 UDP 的 Datagramsocket、 DatagramPackage1对于UDP服务端,首先启动侦听服务,然后得到数据包进行处理,组后根据获得数据包 进行反馈。2.UDP socket没有连接的概念,因此构造完成的Datagramsocket不会发出向对端的网络连 接请求,在每一个发
9、送的UDP数据包中包含目的地址和端口。因为UDP数据不会在对端进 行重新组包,因此一次发送的数据长度必须加以限制。Socket.send(outputPacket);用于发 送一个数据包;socket.receive(inputPacket);用于接收一个数据包。serverclientTCP connectioninitializingServer SocketinitializingSocketwaiting for clientsending requestprocessing requestreplyingresponsingclose connectionclose connecti
10、onserverclientinitializingDategramSocketinitializingDatagramSocketrepayingprocessing packagesending packageresponsingclose connectioncloe connection示例代码:服务器端:public class UDPServerpublic static void main(String args) throws ExceptionDatagramsocket udpSocket = new DatagramSocket(8000); while(true) tr
11、y/ UDP数据读取Datagram Packet packet = new DatagramPacket(new byte512,512);ud pSocket. recei ve( packet);String msg = new String(packet.getData(), O,packet.getLength();System.out.println(msg);if(msg.equals(exit) break;)/ UDP数据发送SimpleDateFormat f = new SimpleDateFormat(MMM dd,yyyy kk:mm:ss);String time
12、=现在的时间是:+ f.format(new Date(); packet.setData(time.getBytes();udpSocket.send(packet);catch(Exception e) e.printStackTrace();)udpSocket.close();)客户端:public void client()InetAddress remotelP;try remotelP = InetAddress.getByName(localhost);Datagramsocket socket = new DatagramSocket(); catch (UnknownHos
13、tException el) e 1. pri ntStackTrace();)Buffered Readerwt = new Buffered Reader (newInputStreamReader(System.in);System.out.println(input one line ,user exit to quit the serverwhile(true)try/读取输入String str = wt.readLine();byte outputData = str.getBytes();/ UDP socket数据发送DatagramPacket outputPacket =
14、 newDatagramPacket(outputData,outputData.length,remoteIB8000);socket.send(outputPacket);if(str.equals(HexitH)/udp数据读取DatagramPacket inputPacket = new DatagramPacket(new byte512,512);socket.receive(inputPacket);System.out.println(newString(inputPacket.getData()zO,inputPacket.getLength();)catch(Except
15、ion e)e.printStackTrace();)socket.close();)三、针对直接 URL 的 HttpURLConnection这个就是把请求的方式从HttpCIient换成HttpURLConnection就可以了。没什么可以说的, 自己看看吧。示例代码:无四、Google集成了 Apache HTTP客户端,可使用HTTP进行网络编程这个不多说了,网络编程,必须会的。自己看代码吧。服务端我使用三种方式:S2SH、只 用Struts2、Servleto客户端就一种,只不过换个请求的URL。服务端和客户端交互使用了 两种方式:XML、JSON,目前开放平台返回的数据都是支持这
16、两种数据格式的。所以我也 实现了这两种数据格式。其实还有一种格式,就是google的protocal buffer,这种形式在 国内用的人比较少,我也没弄,感兴趣的同学看我提供的文档,自己研究吧。注意把里面的 IP换成自己电脑的IP地址。示例代码:服务端:ServletTestl.rar StrAnd.rar、WebAndraid.rar客户端:WebAndroidClient.rar参考网址:cnblogscom/zharcidong . /04/19/2020688.htmlhttD:/bloq,csdn.ret/woshisaD/artide/details/6621.571httD:
17、118259561.shtml注意:在只使用Struts2的服务器端,可以这么配置:也可以这么配置:/WEB-INF/page/register.jsp/WEB-INF/page/index.jsp但是其实返回数据的时候都是封装JSON字符串,没用到第一种形式的配置的功能。 据说,用第一种配置方式,struts2可以自动把返回的数据封装成JSON字符串的形式,但 是我没测试成功。我返现返回什么格式还是什么格式,并没有把数据自动封装成JSON 返回。在使用S2sH的服务端,就不能用第一种方式配置。只能用第二种方式,然后服务端封 装JSON返回客户端。如果用第一种方式配置,就会发生404错误。无法
18、找到服务器端。在使用Servlet的服务端,可以通过下面这种方式设置返回类型,但是其实没用,你设 置了,它也不返回。你只能自己封装XML文件或者JSON字符串,然后返回。response.setContentType(application/json;charset=utf-8,);(5)使用 Web Service我之前只听说过什么事webservice,因此主要是参考下面文章实现的DEMO,他给出了一 些实例代码,不全,我给基本补全了。显示天气信息我都在LOG输出了,没有显示在界面 上,如果大家觉得不爽,可以把信息直接显示在界面上就可以了。因为我被这个问题困扰了 2天,弄的很崩溃,所以就没
19、继续弄。大家自己看吧。那么什么是webService呢?,它是一种基于SAOP协议的远程调用标准,通过webservice 可以将不同操作系统平台,不同语言,不同技术整合到一起。在Android中,第三方公司提 供了基于 webservice 的 jar 包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar httD:/www,crblogs,com/zhdgdong ./04/19/2020688.htmlhttp: l/04/26/2028904.html示例代码:SoapAndroidleset.rar sserExO9,rar (6)直接使用WebView视图组件显示网页这就是使用webview显示网页的问题,比较容易,大家自己看吧。我就不贴实例代码了。