1、目录系统分析与设计 .02.1 需求分析 .102.2 系统总体框架 .122.2.1 总体设计 .122.2.2 功能模块 .132.3 系统详细设计 .242.3.1 多线程设计 .242.3.2 数据库设计 .252.3.3 服务器的设计 .252.3.4 客户端的设计 .262.3.5 消息通信的设计 .26绪论 1.1 选题背景1.1.1 即时消息系统的研究现状 即时消息系统 1(Instant Messenger,IM)是一种在后 PC 时代兴起的,以 Internet 网络为基础的,允许交互双方即时地传送文字、语音、视频等信息,能够跟踪网络用户在线状态的网络应用软件。即时消息系统
2、产生有着深刻的社会原因:人们都有渴望社交,获得社会尊重、实现自我的需求,这正是即时消息软件风行的原动力,而物质文明的日益发达所带来副作用,又使得人们习惯与周围的人保持距离,以致人们更愿意对陌生人敞开心扉,在网络中可以跨越年龄、身份、行业、地域的限制,达到人与人、人与信息之间的零距离交流。从这点上讲,即时消息系统的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间。国内最为流行的即时消息软件是 OICQ(简称 QQ) 。它以良好的中文界面和不断增强的功能形成了一定的 QQ 网络文化。该软件是由腾讯公司于 1999 年 2 月自主开发的基于 Internet 的即 时消息系统。腾讯
3、QQ 目前已成为中国最主要的即时消息服务网络软件。作为一种即时消息工具,QQ 支持显示好友在线、即时传送文字、语音和文件等功能。 QQ 还与无线寻呼、GSM 短信息、IP 电话网互联,为用户提供互联网短信及信息增值服务。腾讯 QQ 开发和拓展统一、高速、丰富的互联网应用平台、在线广告业务、移动通信业务、ISP 及 IP 电话合作业务、企业商用即时消息服务、在线客户支持及在线呼叫业务。 1.1.2 即时消息系统的发展趋势 21 世纪将是网络化、信息化的世纪,信息的融合已经成为社会发展的主流方向 2。即时消息系统 将不断与信息交流领域的系统相互集成和渗透,扩展其自己的功能和应用范围,满足未来话音,
4、数据和视频的多媒体应用需要,使即时消息以更丰富的接入方法,更高的服务质量,更友好的面貌呈现在世人的面前。 从功能角度来看,即时消息系统向支持全媒体方向发展,随着多媒体技术在网络应用中的发展,即时消息系统承载的媒体,不再局限于原来的文字、语音和文件的信息交换,信息载体扩展到图形、图像和流媒体等多媒体业务上。目前 ICQ 和 QQ预设了部分简单的表情图像, 通过传输图像代码来传递表情图像,可以被视为即时消息开发商开发支持图形、图像为载体的即时消息软件的开端。 从应用范围角度来看,即时消息系统集中在 Internet 个人用户之间的信息交流应用,随着网络技术应用的发展,即时消息系统应用范围向园区化、
5、集团化拓展,应用领域突破个人,而用于远程教学、远程医疗、远程演示、网络会议等领域。1.1.3 论文研究的主要内容本论文的主要工作是利用编程技术建立一基于 J2SE 的即时消息系统,主要实现网络即时聊天功能。在建立这个系统的过程中,我将会研究 JAVA 语言,多 线程编程、网络编程以及数据据等方面的知识。 在我的论文中,我将会研究即时消息的发展,并针对不同即时消息工具之间不能互通的弊端,介绍即时消息系统中的应用。为了更好地实现系统,我们还要研究 J2SE 技术。在论文中介绍了 J2SE 的体系 结构、系统设计以及 J2SE 的开发环境。熟悉了开发平台,我们还要了解 基于 TCP/IP 的 Soc
6、ket 网络连接的基础知识,包括网络通信系统架构及 Socket 通信在该系统中的应用等内容。在论文中将着重介绍网络即时消息系统的设计和实现,包括界面及各个功能模块的设计,给出了相应的流程图并对其功能做了详细描述,最终实现了客户端之间的即时聊天通信功能。最后是结尾部分,对本文做了总结并针对该系统提出了一些不足和今后需要改进的地方。1.2 技术背景1.2.1 C/S 模型在网络连接模式中,除对等网外,还有另一种形式的网络,即客户机/服务器网 3,Client/Server。在客户机/服务器网络中,服务器是网络的核心,而客户机是网络的基础,客户机依靠服务器获得所需要的网络资源,而服务器为客户机提供
7、网络必须的资源。这里客户和服务器都是指通信中所涉及的两个应用进程(软件)。使用计算机的人是计算机的“用 户” (user)而不是“ 客户”(client)。但在许多国外文献中,也经常把运行客户程序的机器称为 client(这种情况下也可把 client 译为“客户机” ),把运行服务器程序的机器称为 server。所以有时要根据上下文判断 client与 server 是指软件还是硬件。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到 Client 端和 Server 端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是 Client/Server 形式的两层
8、结构,由于现在的软件应用系统正在向分布式的 Web 应 用发展,Web 和 Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。1.2.2 TCP/IP 协议1. IP网际协议 IP 是 TCP/IP 的心脏,也是网络层中最重要的协议 4。 IP 层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层-TCP 或 UDP 层 ;相反,IP 层也把从 TCP 或 UDP 层接收来的数据包传送到更
9、低层。IP 数据包是不可靠的,因 为 IP 并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP 数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。 高层的 TCP 和 UDP 服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP 地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP 确 认包含一个 选项 ,叫作 IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些 TCP 和 UDP 的服务来 说,使用了 该选项的 IP 包好像是从路径上的最后一个系统传递过来的,而不是来自于
10、它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠 IP 源地址做确认的服务将产生问题并且会被非法入侵。 2. TCP如果 IP 数据包中有已经封好的 TCP 数据包 5,那么 IP 将把它们向 上 传送到 TCP 层。TCP 将包排序并进行错误检查,同时实现虚电路间的连接。TCP 数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。 TCP 将它的信息送到更高层的应用程序,例如 Telnet 的服务程序和客户程序。应用程序轮流将信息送回 TCP 层,TCP 层便将它们向下传送到 IP 层,设备驱动 程序和物
11、理介质,最后到接收方。 面向连接的服务(例如 Telnet、FTP、rlogin、X Windows 和SMTP)需要高度的可靠性,所以它们使用了 TCP。DNS 在某些情况下使用 TCP(发 送和接收域名数据库),但使用 UDP 传送有关单个主机的信息。 3. UDPUDP 与 TCP 位于同一 层,但它不管数据包的顺序、错误或重发。因此,UDP 不被 应用于那些使用虚电路的面向连接的服务,UDP 主要用于那些面向查询- 应答的服务,例如 NFS。相对于 FTP 或 Telnet,这些服务需要交换的信息量较小。使用 UDP 的服务包括 NTP(网络时间协议)和 DNS(DNS 也使用 TCP
12、)。 欺骗 UDP 包比欺 骗 TCP 包更容易,因为 UDP 没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与 UDP 相关的服务面临着更大的危险。 4. TCP 与 UDP 的端口结构TCP 和 UDP 服务通常有一个客 户/ 服务器的关系,例如,一个 Telnet 服务进 程开始在系统上处于空闲状态,等待着连接。用户使用 Telnet 客 户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。 两个系统间的多重 Telnet 连接是如何相互确认并协调一致
13、呢?TCP 或 UDP 连接唯一地使用每个信息中的如下四项进行确认: 源 IP 地址: 发送包的 IP 地址; 目的 IP 地址: 接收包的 IP 地址; 源端口: 源系统上的连接的端口; 目的端口: 目的系统上的连接的端口。 端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个 16 比特的数。服务进程通常使用一个固定的端口,例如,SMTP 使用 25、Xwindows 使用 6000。这些端口号是广为人知的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯1.2.3 编程技术1.JAVA 语言Java6是由 Sun Microsystems 公司
14、于 1995 年 5 月推出的 Java 程序设计语言(以下简称 Java 语言)和 Java 平台的总称。用 Java 实现的 HotJava 浏览器(支持 Java applet)显示了 Java的魅力:跨平台、动态的 Web、Internet 计算。从此,Java 被广泛接受并推动了 Web 的迅速发展,常用的浏览器现在均支持 Java applet。另一方面,Java 技术也不断更新。Java 语言的优良特性使得 Java 应用具有无比的健壮性和可靠性,这也减少了应用系统的维护费用。Java 对对象技术的全面支持和 Java 平台内嵌的 API7能 缩短应用系统的开发时间并降低成本。J
15、ava 的编译一次,到处可运行的特性使得它能够提供一个随处可用的开放结构和在多平台之间传递信息的低成本方式。特别是 Java 企业应用编程接口(Java Enterprise APIs)为 企 业计 算及电子商 务应用系统提供了有关技术和丰富的类库。2. Winsock Windows 下网络编程的规范Windows Sockets 是 Windows 下得到广泛应用的、开放的、支持多种协议的网络编程接口。 通信的基 础是套接口(Socket),一个套接口是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接口都有它的类型和与其相关的进程。套接口存在于通讯域中。通讯域是为了
16、处理一般的线程通过套接口通讯而引进的一种抽象概念。在一次网络通信/连接中有以下几个参数需要被设置:本地 IP 地址 - 本地端口号 - 对方端口号 - 对方 IP 地址。左边两部分称为一个半关联,当与右边两部分建立连接后就称为一个全关联。在这个全关联的套接口上可以双向的交换数据。如果是使用无连接的通信则只需要建立一个半关联,在发送和接收时指明另一半的参数就可以了,所以可以说无连接的通信是将数据发送到另一台主机的指定端口。此外不论是有连接还是无连接的通信都不需要双方的端口号相同。Socket 接口是访问 Internet 使用得最广泛的方法。3.多线程编程多线程 8是为了使得多个线程并行的工作以
17、完成多 项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。使用线程的好处有以下几点:使用 线程可以把占据长时间的程序中的任 务放到后台去处理用 户界面可以更加吸引人,这样比如用 户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度程序的运行速度可能加快在一些等待的任务实现上如用户输 入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。多线程在 JAVA 里面的应用也是很广泛。Java 对多线程的支持是非常强大的,他屏蔽掉了许多的技术细节,让我们可以轻松的开发多线程的应用程序。1.2.4 开发平台1.
18、J2SE 平台Java2 平台包括:标准版(J2SE )、企业版(J2EE)和微缩版(J2ME)三个版本。J2SE,J2ME 和 J2EE,这 也就是 SunONE(Open NetEnvironment)体系。 J2SE 就是 Java2 的标准版,主要用于桌面应用软件的编程;J2ME 主要应用于嵌入是系统开发,如手机和 PDA 的 编程;J2EE 是 Java2 的企业版,主要用于分布式的网络程序的开发,如电子商务网站和 ERP 系统。Standard Edition(标准版) J2SE 包含那些构成 Java 语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程定位在客户端,主
19、要用于桌面应用软件的编程。J2SE 包含那些构成 Java 语言核心的 类。 比如:数据库连接、接口定义、输入/输出、网络编程2. MYSQL 数据库MYSQL 9的特性 MYSQL 的特性包括: Internet 集成。 SQL Server 2000 数据库引擎提供完整的 XML 支持。它还具有构成最大的 Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。MYSQL 程序设计模型与 Windows DNA 构架集成,用以开发 Web 应用程序,并且 MYSQL 支持 English Query 和 Microsoft 搜索服务等功能,在 Web 应用程序中包含了用户友好的查询和强
20、大的搜索功能。可伸缩性和可用性。 同一个数据库引擎可以在不同的平台上使用,从运行 Microsoft Windows 98 的便携式电脑,到运行 MYSQL 数据中心版的大型多处理器服务器。MYSQL 企业版支持联合服务器、索引视图和大型内存支持等功能,使其得以升级到最大 Web 站点所需的性能级别。企业级数据库功能。 MYSQL 关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千个并发修改数据库的用户的开销减到最小。MYSQL 分布式查询使您得以引用来自不同数据源的数据,就好象这些数据是 MYSQL 数据库的一部分,同时分布式事务支持充分保护任何分布式数据更新的完整性。复制同样使您得以维护多个数据复本,同时确保单独的数据复本保持同步。可将一组数据复制到多个移动的脱接用户,使这些用户自主地工作,然后将他们所做的修改合并回发布服务器。易于安装、部署和使用。 MYSQL 中包括一系列管理和开发工具,这些工具可改进在多个站点上安装、部署、管理和使用 SQL Server 的过程。 MYSQL 还支持基于标准的、与 Windows DNA 集成的程序设计模型,使 MYSQL 数据库和数据仓库的使用成为生成强大的可伸缩系统的无缝部分。这些功能使您得以快速交付 MYSQL 应用程序,使客户只需最少的安装和管理开销即可实现这些应用程序。