[理学]第4章-网络通信

上传人:油条 文档编号:49791540 上传时间:2018-08-02 格式:PPT 页数:47 大小:344.50KB
返回 下载 相关 举报
[理学]第4章-网络通信_第1页
第1页 / 共47页
[理学]第4章-网络通信_第2页
第2页 / 共47页
[理学]第4章-网络通信_第3页
第3页 / 共47页
[理学]第4章-网络通信_第4页
第4页 / 共47页
[理学]第4章-网络通信_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《[理学]第4章-网络通信》由会员分享,可在线阅读,更多相关《[理学]第4章-网络通信(47页珍藏版)》请在金锄头文库上搜索。

1、 vv第第4 4章章 网络通信网络通信v 移动终端最大的魅力在于能够随时 随地接入无线网络来访问数据和服务。 本章将首先介绍连网服务的核心通 用连接框架(Generic Connection Framework,GCF)的体系结构,然后 通过案例学习如何通过HTTP、Socket及 Datagram访问网络服务。v J2ME联网技术简介4.1GCF(通用连接框架)4.2HTTP 连接4.3Socket 连接4.4Datagram 连接4.5小结4.64.1 J2ME联网技术简介v 在J2SE中可以使用和java.io提 供的类来访问网络服务和文件系统,由于移 动信息设备的处理能力和内存的限制,

2、它们 并不适合运行在移动设备上。 图4-1 通用连接框架与MIDP、基础简表和J2SE的关系v 由于无线网络的各个特点,因此在开发 MIDP 联网应用程序的时候,要注意的很重 要的一点就是许多关于网络通信的API都是要 花费大量CPU计算时间并且有可能阻塞线程 的。 4.2 通用连接框架v 通用连接框架在J2ME 平台中扮演着十 分重要的角色。由于移动信息设备的资源受 限特性,所以不适合在这里使用。 Generic Connection Framework(以下简称 GCF)是在CLDC中定义的。它的引入成功 的解决了联网的复杂类型。 4.2.1 GCF 的层次结构v 图4-2 通用连接框架的

3、接口结构图 4.2.2 GCF的使用4.3 HTTP 连接v 前面已经提到过,MIDP规范中规定 设备必须支持HTTP和HTTPS,所以, 这里主要也将围绕HttpConnection进行 讨论。 4.3.1 HTTP 简介v HTTP是无状态协议。 v 在HTTP请求中有多种形式,在这里只 简单的介绍:GET,POST和HEAD三种。 v 1GETv 2HEADv 3POST 4.3.2 HTTP 连接状态v 一个HTTP 连接有三种状态:setup ,connected和closed。 4.3.3 建立HTTP 连接v 应用程序通过 javax.microedition.io.Connec

4、tor.open() 这个方法打开连接 4.3.4 设置HTTP请求头v 请求头的类型HTTP提供了许多的 头标类型,使MIDlet设备和HTTP服务器 就发送和接收内容上的一些问题进行协 商。(1)Connection(2)Connection-Length(3)Content-Type(4)Date(5)Last-Modified(6)Location(7)Server(8)User-Agent (9)Accept-Language (10)Authorization 4.3.5 使用HTTP 连接v 在MIDlet 设置了需要的请求头标后 ,就可以使用此连接了,而连接的动作 是根据set

5、RequestMethod 方法的设置值 。v 如果服务器响应正确的话,还可以 打开输入流,读入数据。v 1GETv 2HEADv 3POST 4.3.6 关闭HTTP 连接v 在前面的代码中,其实已经用过 javax.microedition.io.Connector.close() 方法了,使用该方法可以关闭HTTP连接 。 4.3.7 HTTP 示例v 下面演示J2ME 实现简单电子邮件 发送功能。 4.4 Socket 连接 4.4.1 Socket 连接简介v 使用Socket是连接两台计算机最简 单的方法,另外由于Socket 使用的是 TCP,所以也就保证了传输的质量。v 并不是

6、所有的MIDP设备都支持 Socket 网络。在这部分中主要涉及的两 个接口是SocketConnection和 ServerSocketConnection。 4.4.2 Socket 示例v 在J2ME中使用Socket和J2SE中差 不多,无非就是由服务端打开一个监听 端口等待客户端请求该端口,下面来看 具体的示例。 v 图4-4 Socket示例 4.5 Datagram 连接 4.5.1 Datagram 连接简介v 提到Datagram 网络就要先对UDP 通信协议做一个简单的介绍。v 前面介绍的HTTP是属于ISO 网络层的 应用层,在它下方传输用的是TCP,TCP在 传输数据的

7、时候,如果数据发生错误,那么 将重新传输该错误的部分。v 但是这样一来常常会浪费很多时间 ,在一些讲究实时性的通信过程中,这 样做有些不切实际。v 例如在观看网络视频的时候,少量 的数据丢失并不会有很严重的影响,因 此就会用到UDP 这样的协议。一个UDP Datagram 数据包含了地址和数据缓冲区 ,其中地址是一个URL字符串。v 在J2ME中发送数据的时候使用 Datagram.setAddress()方法来设置目标 地址(目标地址要包括主机名和端口号 )。在接收数据的时候,地址是指数据 的源地址。v 数据缓冲区,是一个带有偏移量和 长的字节数组,程序可以直接访问该数 组,也可以通过Da

8、taInputStream和 DataOutputStream进行间接的读写。通 过Datagram.getOffset()方法对获得数据 的偏移量。v 通过Datagram.getLength()和 Datagram.setLength()方法对数据部分的 字节长度进行读取和设置。同样要获得 连接就需要用到DatagramConnection, 而获得的方法也和前面说到的一样使用 Connector.open()方法,所不同的是URL 应该满足如下的形式。v datagram:/localhost:5555 这样表 示建立了一个客户端模式的连接。在指 定ip:localhost 和指定端口:

9、5555。v datagram:/:5555 这样建立的是一 个服务器端模式的连接,在本地的5555 端口。v 建立连接后,可以通过 DatagramConnection的newDatagram() 方法构造一个Datagram,然后调用 DatagramConnection的send()方法。v 流套接字从发送方向接收方发送的 是连续的数据流,且不要求标记记录的 界限,数据都以不同的包形式发送,而 且各个包中的数据也是不同的。v 在使用Socket连接时需要在发送方 和接收方之间建立一个连接,让数据在 这个连接中进行传送,这样不需要指明 消息的发送方向。v 但是UDP 套接字不需要连接,只是

10、 一个单独处理消息的模式,每条消息发 往不同的目的地,就好像邮寄东西一样 ,显然这种发送方式是需要发送方向的 。v 还有一点Socket和UDP不同的是, UDP可以接收不同方向的消息,而 Socket只能接收一个方向的消息。v 从安全性和可靠性方面来说,UDP 不如Socket安全可靠。Socket 像是一种 点对点的连接,中间已经架构了连接, 它可以保证发送方的消息发送到接收方 (除非断网),万一网络方面有点问题 ,一旦修复,未发送的消息还是会依次 发送,不必担心重发。v 在这点上UDP 做不到,而且在发送 过程中有可能出现消息丢失的现象,这 就需要用户重发。 4.5.2 Datagram示例v 还是来看示例,代码如下:4.6 小 结v 本章主要介绍了无线网络的开发, 首先介绍了通用连接框架和它的层次结 构,又详细介绍了HTTP连接、Socket连 接和Datagram连接。v 重点掌握的内容是HTTP连接和 Socket连接。这部分内容涉及了J2EE方 面的一些内容,对这部分知识不太熟悉 的读者可以参考J2EE相关的内容。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号