毕业设计(论文)-基于 Java 技术的网络即时通讯软件CQQ的设计与实现.pdf_第1页
毕业设计(论文)-基于 Java 技术的网络即时通讯软件CQQ的设计与实现.pdf_第2页
毕业设计(论文)-基于 Java 技术的网络即时通讯软件CQQ的设计与实现.pdf_第3页
毕业设计(论文)-基于 Java 技术的网络即时通讯软件CQQ的设计与实现.pdf_第4页
毕业设计(论文)-基于 Java 技术的网络即时通讯软件CQQ的设计与实现.pdf_第5页
免费预览已结束,剩余42页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于基于 java 技术的网络即时通讯技术的网络即时通讯 软件软件 cqq 的设计与实现的设计与实现 i摘要摘要 随着互联网的普及,尤其是移动互联网的发展,人们利用电脑和互联网的时间越来越多,这使得网络即时通讯(instant messenger,简称 im)的普及成为了可能。网络即时通讯很大程度上体现了网络给人们生活带来的变化,使人们的沟通更加方便、快捷。即时通讯软件被加入了越来越多的新功能,使它正从毫无商业应用价值的聊天、游戏转变出来,成为能为企业带来商机和实惠的领域。虽然网络即时通讯飞速发展,并已达到了比较成熟的阶段,但是这些知名的网络即时通讯工具只有通过它们自己的服务器才能运行。而现在越来越多的私有网需要建立自己内部的即时通讯网络。 论文的主要研究目的是设计并开发一个能在任何网络上运行的即时通讯软件。主要研究工作是分析 client/server 模型和 browse/server 模型的优缺点,并设计出一套比较合理的方案来实现网络即时通讯的功能。经过对各种设计方案的研究、比较、分析和设计,最后确定采用 c/s 模式来实现网络即时通讯的功能。系统服务器端用多线程机制实现服务并发;用数据库连接池技术提高连接和访问数据库的效率;数据库采用 mysql,数据传输采用用户数据报协议(user datagram protocol,简称 udp) ;为了减轻服务器的负担,提高客户端的响应速度,用 xml 文档来存放客户端数据。 经过运行和分析表明,通过以上设计方案实现的系统具有的特点有: (1)系统采用 java 多线程机制实现了服务器并发处理功能,服务器响应速度快,处理能力强,稳定性高; (2)系统采用连接池技术对所有的数据库访问操作进行统一分配和管理,提高了访问数据库的效率,增加了稳定性和安全性; (3)网络传输采用 udp 协议,该协议传输效率高,而且在网络良好的情况下丢失数据情况极少; (4)客户端用 xml 文档对用户的好友资料、聊天记录进行保存,客户端查看好友资料、聊天记录等操作不需要访问服务器就能实现,大大减轻了服务器的负担。 (5)客户端响应速度快,而且客户端数据能和服务器端的数据保持一致。 关键词关键词:网络即时通讯,套接字,用户数据报协议,并发服务器,多线程,数据库连接池,可扩展标记语言 iabstract with the internets popularity, especially the development of mobile internet, peoples time for using computer and internet is getting increasingly more, which makes the publicizing of instant messenger possible. network instant messenger, to a very big extent, reveals the big changement in our lives brought by network, that makes the contact between people more convenient and fast. though the network instant messenger develops very rapidly, and has arrived its relatively matured stage, this known network instant messenger tool can only run on the servers of their own. while at present time, more and more private networks need to construct the interior instant messenger network of their own. the main work of this thesis is to design and develop a instant messenger software than can run on any network. the main research work is to analyze the merits and shortcomings of client/server mode and browser/server mode, and gives a reasonable scheme to realize the functions of network instant messenger. after research、comparison and design on many designing schemes, we at last decided to adopt c/s mode to realize the function of network instant messenger. at the point of system server, it uses multi-thread to realize the service concurrence, and database connection pool technology to promote the efficiency of linkage and access to the database. it applies the mysql to design the database, and user datagram protocol to realize the data transportation and xml document to store users data source after analysis and real test, the system has features as following: (1) system applies java multi-thread to realize servers concurrence function, server responds fast, and has strong processing ability and good stability; (2) system applies connection pool technology to make overall configuration and management to all the database access operation, promoting the efficiency of database access and enhancing the stability and security; (3) network transportation is realized through using udp protocol, this protocol has high transportation efficiency, besides, it loses little data when the network is bad. (4) client side uses xml document to store buddy information and chat record, clients operation such as looking up for buddys information and chat record can be done without access to the server, subtracting the servers burden greatly. (5) clients responding speed is very high, and client sides data can keep updated with the server side. keywords:network instant messenger ,socket, user datagram protocol, concurrence server, multi-thread , database connection pool, the extensible markup language (xml) ii目目 录录 摘要摘要i abstractii 1 绪言绪言 1.1 课题背景课题背景 1 1.2 课题研究的目的和意义课题研究的目的和意义 1 1.3 国内外概况国内外概况 2 2 系统设计方案的研究系统设计方案的研究 2.1 系统的设计方案系统的设计方案 4 2.2 设计方案的分析设计方案的分析 4 2.3 采用的关键技术采用的关键技术 5 2.3.1 socket 网络通讯技术网络通讯技术 6 2.3.2 udp 协议协议 7 2.3.3 并发服务器技术并发服务器技术 8 2.3.4 java 多线程技术多线程技术 9 2.3.5 连接池技术连接池技术 9 2.3.6 xml 文档技术文档技术 10 2.3.7 jdom 技术技术 10 3 系统的详细设计系统的详细设计 3.1 系统的基本功能设计系统的基本功能设计 12 3.1.1 服务器端基本功能设计服务器端基本功能设计 12 3.1.2 服务器端系统结构图服务器端系统结构图 14 3.1.3 服务器端用例模型设计服务器端用例模型设计 15 3.1.4 客户端基本功能设计客户端基本功能设计 15 3.1.5 客户端系统结构图客户端系统结构图 17 3.1.6 客户端用例模型设计客户端用例模型设计 17 3.2 数据库的设计数据库的设计 18 3.2.1 数据库需求分析数据库需求分析 18 3.2.2 数据库概念结构设计数据库概念结构设计 18 3.2.3 表的设计表的设计 20 3.2.4 表项在数据库中的表示表项在数据库中的表示 20 3.3 xml 文档的设计文档的设计 21 4 系统的具体实现系统的具体实现 4.1 服务器端的具体实现服务器端的具体实现 23 4.1.1 服务器端管理员登录服务器端管理员登录 23 4.1.2 服务管理器服务管理器 23 4.1.3 客户服务程序客户服务程序 25 4.2 客户器端的具体实现客户器端的具体实现 27 4.2.1 申请申请 cqq 号号 27 4.2.2 cqq 用户登录用户登录 28 4.2.3 cqq 主菜单主菜单 29 4.2.4 好友上下线通知好友上下线通知 30 4.2.5 收发好友消息收发好友消息 30 iii4.2.6 查看更新好友资料查看更新好友资料 31 4.2.7 查看聊天记录查看聊天记录 32 4.2.8 修改个人资料修改个人资料 33 4.2.9 添加好友添加好友 33 4.3 数据库连接池数据库连接池 34 4.3.1 数据库环境的配置数据库环境的配置 34 4.3.2 连接池属性文件的配置连接池属性文件的配置 34 4.3.3 连接池管理日志连接池管理日志 35 4.3.4 连接池管理类的实现连接池管理类的实现 35 5 总结与展望总结与展望 5.1 开发过程开发过程 37 5.2 工作总结工作总结 37 5.3 展望展望 38 致谢致谢 39 参考文献参考文献 40 声明声明 42 iv1 绪言绪言 本章阐述设计与开发网络即时通讯系统的背景、目的、意义及网络即时通讯的发展现状。 1.1 课题背景课题背景 在 internet 飞速发展的今天, 互联网成为人们快速获取、 发布和传递信息的重要渠道,internet 大大缩小了时空界限。这使得网络通讯的发展成为了可能,网络通讯的出现使人们之间的联系变得大为频繁。以互联网为代表的现代通信技术的迅猛发展极大地拓展了现代社会的信息空间,每天都有千百万种信息通过网络传播到世界各地,以计算机和现代通信为代表的信息技术正在迅猛发展。 即时通讯(im)是一个终端服务, 允许两人或多人使用网络即时的传递文字信息、档案、语音与视频交流1。所以即时通讯工具的出现加快了信息传递的速度,丰富了信息传递的表现方式,同时也拓宽了人际沟通的途径和范围,使人与人之间的联系更加紧密。 即时通讯软件可以说是目前我国上网用户使用率最高的软件。现在比较受欢迎的即时通讯软件有 icq、腾讯 qq、msn、新浪 uc、网易泡泡、雅虎通、tomskype。无论是老牌的 icq,还是国内用户量第一的腾讯 qq,以及微软的 msn messenger 都是大众关注的焦点,它们能让你迅速地在网上找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少即时通讯软件还集成了数据交换、语音聊天、网络会议、电子邮件等功能。 但是拥有这些通讯软件的公司都只提供软件的客户端程序免费下载,而不提供其服务器程序,因此对于未与互联网连接的私有网络,这些软件就用不上了。不只这样,现在的即时通讯系统都是集中式的处理,几百万甚至上亿的用户都集中在非常有限的几台服务器上进行处理,一旦这些服务器遭受黑客入侵或者发生意外事故会给网民造成不可估量的损失。所以,anyq 积极倡导分布式的即时通讯系统,希望有越来越多的用户能够享受到 jabber 这个开放式即时通讯系统所带来的安全快捷服务,越来越多的企业能在这个框架下建立自已企业内部的即时通讯系统2。 1.2 课题研究的目的和意义课题研究的目的和意义 即时通讯软件的最大特点是在网上进行信息的实时交流。即时通讯的发展使得人们可以进行网上社交、获得社会尊重、实现自我的需求,这同时也成为了网络即时通讯软件发展的驱动力。而物质文明的日益发达所带来副作用,又使得人们习惯地与周围的人保持距离,以致人们更愿意对陌生人敞开心扉。与传统通讯方式相比,即时通信具备快捷、廉价、隐秘性高的特点,在网络中可以跨越年龄、身份、行业、地域的限制,达到 1人与人、人与信息之间的零距离交流。从这点上讲,网络即时通讯的出现改变了人们的沟通方式和交友文化,大大拓展了个人生活交流的空间3。 1.3 国内外概况国内外概况 即时通讯软件起源及发展。 最早的即时通讯软件是 icq,icq 是英文中 i seek you 的谐音,意思是我找你。icq最大的功能就是即时信息交流,只要记得对方的号码,上网时可以呼他,无论他在哪里,只要他上网打开 icq, 人们就可以随时交流。 icq 是四名以色列青年开发的, 他们于 1996年 7 月成立 mirabilis 公司,并在 11 月份发布了最初的 icq 版本,在六个月内有 85 万用户注册使用。 早期的 icq 很不稳定,尽管如此,还是受到大众的欢迎,雅虎也推出 yahoo! pager,美国在线也将具有即时通讯功能的 aol 包装在 netscape communicator 中,而后微软更将 windows messenger 内建于 microsoft windows xp 操作系统中。 1998 年 11 月,深圳腾讯计算机系统有限公司开发出 oicq。它于 1999 年 3 月开始提供正式服务,腾讯 qq 也迅速成为中国最大的即时消息软件,而且还越来越受欢迎。还有 msn、新浪 uc、网易泡泡、雅虎通、tomq 等,软件技术都很好,而且简单易用,成为网民最喜欢的通信软件。 icq的典型应用是网上寻呼机,可以互相寻呼、建立连接、发送消息,并可以使用其他的网络工具(如netmeeting,internetphone)来打网上电话。但是,由于icq是英文的,并且它的服务器设在国外,使用起来不是很方便。oicq 是基于internet的免费网络寻呼软件, 是腾讯openicq的简称。 它不仅仅是虚拟的网络寻呼机, 更可以与传统的无线寻呼网、gsm无线移动电话的短消息系统互联,是国内唯一真正的网络寻呼机。oicq支持显示朋友在线信息、即时传送信息、即时发送消息、即时传送文件等功能。用户界面参考了早期用户熟悉的英文icq软件,使用起来更加方便。它支持所有微软公司发布的操作系统,是十分灵活的网络寻呼工具4。 oicq使用的是udp协议,这是一种无连接协议,即通信双方不用建立连接就可以发送信息,所以效率比较高,广泛受到网友的欢迎。 在国外有 icq、国内有 oicq 一统天下的形势下,比天国际推出了 anyq。anyq 是由比天国际软件工作室(b)开发完成的新一代分布式即时通讯系统,该工作室是由国内著名的网络存储网站世纪驱动()的创立者 tobee 所创办的。据 anyq 的开发者介绍,anyq 是国内首套基于 jabber 分布式网络即时通讯技术规范的应用系统。即时通讯是一种与邮件同等重要的网络交流手段,虽然现在 ietf 并没有推出分布式即时通讯的业界标准,但即时通讯系统的分布式处理是大势所趋。现在的即时通讯系统都是集中式的处理,几百万甚至上亿的用户都集中在非常有限的几台服务器上进行处理,无法想象一旦这些服务器遭受黑客入侵或者意外事故会给网民造成多大的损失。所以,anyq 积极倡导分布式的即时通讯系统,希望有越来越多的用户能够享受 2到 jabber 这个开放式即时通讯系统所带来的安全快捷服务,越来越多的企业能在这个框架下建立自已企业内部的即时通讯系统。 目前即时通讯正向综合化和企业化两个方向发展。 (1)综合化正向着多媒体服务前进。在个人应用领域,即时通讯软件需要更加的综合化。用户获取综合信息方面,需要即时通讯软件提供更多的信息渠道。腾讯和 msn 都表示过,在面向大众用户的客户端方面,他们希望即时通讯软件具备更多的综合性的功能,用户不必打开各种各样的网页,仅用桌面即时通信工具就能达到他们不同的需求。而在综合信息处理方面,用户也需要软件提供更综合化的管理功能。现在的即时通讯软件在信息综合处理方面还达不到用户的要求,如何帮助用户有效的管理即时通讯中的信息,也是目前各大开发商亟待解决的问题。因此综合化服务既是其发展趋势,也是各开发商市场竞争的主要手段。 (2)专业化是服务广大企业的必经之路。在企业应用领域,企业信息平台和即时通讯相结合,针对目前行业的细化引起的客户群特征有所不同,加之各个企业对信息化越发重视,越来越多的企业允许员工使用即时通信工具,因此各行业针对不同用户,对即时通讯软件有了更多,更专业的要求。这种形势导致了即时通信软件会更加专业化,更加细化5。 32 系统设计方案的研究系统设计方案的研究 2.1 系统的设计方案系统的设计方案 本系统采用 client/server 模式实现,服务器端用多线程实现服务并发,用数据库连接池技术提高数据库连接的效率,数据库采用 mysql,数据传输采用用户数据报协议,用 xml 文档来存放客户端数据。 系统开发采用的操作系统平台:windows xp 和 windows 2000。 开发工具采用 sun 公司提供的 jdk(java developers kit)1.4.2 版和 mysqlab 公司开发的 mysql4.1.18 版数据库。 选用 java 作为开发语言是因为 java 语言能够很好地适应 internet 编程,它最大限度地利用了网络资源。而且具有简单、强壮、安全、动态、分布式、可移植、多线程、高性能、解释性、面向对象和与系统无关等优点6。 mysql 是一个可用于各种流行操作系统平台的关系数据库系统。 它具有客户机/服务器体系结构的分布式数据库管理系统。mysql 完全适用于网络,用其建造的数据库可在因特网上的任何地方访问,因此,可以和网络上任何地方的任何人共享数据库。mysql还具有容易使用、运行速度快、支持查询语言和性能、安全性、连接性、可移植性好等优点7。 综上原因,用 java 和 mysql 这个组合开发本软件应该具有较好的稳定性和可移植性。 2.2 设计方案的分析设计方案的分析 采用 java 技术实现网络即时通讯的模式有两种: 一种是 client/server(简称 c/s 模式),一种是 browse/ server(简称 b/s 模式) 。 c/s模式的优点是能充分发挥客户端pc的处理能力, 很多工作可以在客户端处理后再提交给服务器,客户端响应速度快。相反,b/s模式的客户端基本只进行一些最简单的数据处理,把大部分的工作都交给服务器来处理,客户端响应速度慢8。 支持即时通讯软件最简单的协议是超文本传输协议(http)。http属于应用层传输协议,优点是程序简单,技术要求不高;缺点是传输速度较慢,即时性不强。另外,http协议靠www服务软件支持,然而浏览器软件同时负责繁重的网页传输,如果要把即时软件这一高频率访问的任务也由浏览器软件承担,很可能使即时通讯软件变得反应迟缓,以上几个缺点对即时通讯来说都是比较致命的。 tcp(传输控制协议)和udp(用户数据报协议)是开发im软件比较理想的选择。采用这两种协议时,繁重的通讯管理往往由专门设计的支持此协议的服务程序来完成。这两种协议的好处是速度比http快得多,但对开发人员的技术要求也比较高。tcp是一种面向连接的协议,在客户端和服务器端通讯之前,必须先建立连接,后进行通讯。它 4最大的优点是传输可靠、信息准确。 udp是一种非连接协议,由于在通讯之前不需要建立连接,传输速度比tcp快得多,而且内存资源开销极小。但udp协议最大的缺憾是不保证按发送顺序收到全部信息,所以是一种不可靠的传输协议。因此信息检验和复核要在即时通讯软件中进行,从而使程序变得冗长复杂9。事实上,在当今网络环境中,udp的不可靠性往往被网络系统的先进性弥补,因而误传率实际很小。 从三种协议的特点来看,udp协议最能满足即时通讯的要求。 为同时处理多个并行通讯任务,充分利用服务器的硬件资源特性,提高服务器的信息传输效率,即时通讯软件的服务端程序应该采用多线程技术,使多个通讯任务在服务器中并行运行。 开发系统的语言采用的是java,数据库采用的是mysql,用jdbc连接方式进行数据库连接是一种比较理想的选择,在一般情况下使用开发数据库的应用时,传统模式的步骤是10: (1)在程序中以url的方式指定驱动程序并创建连接,获取特定的数据库连接。 (2)按照固定的接口操作数据库,例如获取statement,sql结果集resultset等。 (3)断开数据库连接,关闭所有涉及到的数据库资源。 使用这种模式开发,存在的问题有: (1)在jdbc中,建立数据库连接是非常耗费资源的。当使用即时通讯软件的人数较多时,服务器的并发访问量就较大,频繁的连接操作,会大大降低服务器和数据库的运行效率。 (2)在传统的模式中,系统必须去关闭每一个连接,当程序出现异常时,就不能关闭连接,这将导致内存泄露。 (3)当某一个连接使用太久会出现不稳定,会导致数据库服务器重启、崩溃等。 采用连接池管理技术就能很好的解决以上问题,它的主要优点有: (1)通过重用连接,节省了数据库连接建立所用的时间,可以提高服务器的服务效率和响应速度。 (2)便于管理、监控。可通过连接池api接口得到当前的连接数量,使用情况。 (3)池连接的建立、关闭由服务器自行管理,不用客户端干涉,使用方便。 为了提高系统的运行效率,减少客户机访问服务器的次数,应该尽可能的让一些数据处理在客户端进行,比如,获取聊天记录和好友资料等。本系统中采用xml文档来实现这些信息的存储。 2.3 采用的关键技术采用的关键技术 系统采用的关键技术有:socket 网络通讯技术,udp 协议,并发服务器技术,java多线程技术,连接池技术,xml 文档技术,jdom 技术。 52.3.1 socket 网络通讯技术网络通讯技术 java 具有强大的网络编程功能,提供了基于 socket 的通信方式(socket-based communication) ,使得应用程序可以像读写文件一样从 socket 读取数据和向 socket 写入数据。java 提供了流 socket 和数据包 socket。两者分别基于传输控制协议和用户数据报协议11。 套接字是网络通信的基础, 在windows下定义了一系列的关于套接字的函数, 对于一个简单的服务器,它的基本结构是:建立套接字,绑定地址和端口,建立套接口队列,接收连接,处理连接,关闭套接字。对于用户程序,它的基本结构是:建立套接字,连接服务器,处理连接,关闭套接字。 socket 在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自己对应的 ip 和 port。此后,应用程序送给 socket 的数据,由 socket 交给驱动程序向网络上发送出去。计算机从网络上收到与该 socket 绑定的 ip+port 相关的数据后,由驱动程序交给socket,应用程序便可从中提取接收到的数据。 下面使用两个用例图来介绍应用程序、socket 和网络驱动程序之间的数据传送过程和关系。 (1) 数据发送过程如图 2.1 所示。 产生 socket 应用程序 应用程序将要发送的数据传送给 socket 调 用bind 将socket 的信息通知给驱动程序 socket 驱动程序从 socket取出数据通过网卡发送出去驱动程序 图 2.1 数据发送过程 6(2) 数据接收过程如图 2.2 所示。 产生 socket应用程序 应 用 程 序 从socket 中取数据调 用bind 将socket 的信息通知给驱动程序 socket 驱动程序根据从网卡传送来的数据报中的指定目标端口号,将处理后的数据送到 socket驱动程序 图 2.2 数据接收过程 2.3.2 udp 协议协议 udp(user datagram protocol)协议是定义用来在互联网环境中提供包交换的计算机通信的协议。这是无连接通讯协议,不保证可靠数据传输,但能够向若干个目标发送数据,接收发自若干个源的数据12-13。 虽然 udp 是不可靠的,但也不会轻易导致传输失败。udp 连接框架见图 2.3。 图 2.3 udp 非面向连接框架 7udp 协议传输效率较高,与它相比,tcp 协议传输效率较低,因为它是一种面向连接的传输协议,在进行数据传输之前要在源和目标之间建立一个虚拟连接,这需要时间和网络开销。tcp 连接框架见图 2.4。 图 2.4 tcp 面向连接框架 虽然 udp 是面向无连接的协议,不能保证数据的传输是否能够到达目的地,数据的传输是否正确和接收方接收到的数据的次序是否正确。 但在当今发达的网络环境中, udp的不可靠性往往被网络系统的先进性所弥补,因而使在实际数据传输过程中出错的机率很小。虽然 udp 协议存在一些不足,但在有些情况下,udp 协议比 tcp 协议更加符合要求, 比如一些常见的应用: 域名系统 dns, 网络文件系统 nfs, 简单网络管理协议 snmp就是用 udp 协议的14。而且在系统中可以对 udp 协议的不可靠性加以控制,就可以降低 udp 协议的不可靠性。本系统采用 udp 协议的一个重要原因,就是它的传输效率很高。 2.3.3 并发服务器技术并发服务器技术 重复性服务器每次只能处理一个客户的请求,其效率非常低,远远不能满足多用户操作的服务器的性能要求。并发服务器每次可以处理多个客户的请求,效率高,但实现复杂。而在实际应用中,一个软件仅能完成基本功能还不够,还必须有足够的处理能力以及响应速度。对于服务器/客户体系的软件而言,服务器的性能占有主要地位。对于一个多用户的即时通讯软件而言,对服务器的处理能力要求非常高15。通过并发技术,能极大的提高服务器的处理能力和响应速度。 82.3.4 java 多线程技术多线程技术 采用多线程可以很好地实现并发服务器,并且由于线程的系统开销小、切换时间短,对于需处理大量客户的服务器而言具有更大的优势。实现多线程并发服务器的基本过程是:当连接建立后,服务器调用主线程产生新的线程,由新线程处理客户请求,同时主线程等待另一个客户的请求16。 线程(thread)是为了提高系统内程序的并发(concurrency)执行程度而提出来的概念, 它是比进程更小的,能够独立运行的基本单位。在引入线程的系统中,线程是处理器调度(schedule)的基本单位,而传统的进程则只是资源分配的基本单位。同一进程中的线程共享这个进程的全部资源与地址空间,除此之外,线程基本上不拥有其他任何系统资源,当然,每个线程也必须拥有自己的程序计数器(program counter),寄存器堆(register file)和栈(stack)等等。即线程是一个轻量级实体(light-weight entity),它的结构(thread structure)相对简单,在切换速度上非常快,同一进程中的线程切换不会引起进程的切换,对于并行处理来讲,有效的利用线程能够改善处理的效率,简化程序的复杂性。 如果不采用多线程机制,同一时刻只能单任务操作,效率非常低。例如程序往往会在接收数据时发生阻塞,只有等程序获取数据后才能继续往下执行。特别是网络上这种状况更让人们不能忍受。java 程序中可以同时并行运行多个独立的线程,这样就可以很好的解决这一问题17-18。例如,如果创建一个线程来进行数据输入输出,再创建另一个线程在后台进行其它数据处理,在这种情况下,就算输入输出线程在接收数据时阻塞,后台处理数据的操作还是可以正常进行。所以多线程设计大大提高了程序执行的效率和处理能力。 2.3.5 连接池技术连接池技术 数据库应用是开发大中型系统不可缺少的辅助。但如果对数据资源没有很好地管理(如没有及时回收数据库的 resultset、statement、connection 等资源) ,往往直接导致系统的不稳定。在进行数据库访问时经常会遇到瓶颈问题,而采用连接池技术是一个合理、有效的连接管理策略,避免了对连接的随意、无规则的使用。使得一个数据库连接可以得到高效、安全的重用,避免了数据库连接频繁的建立、关闭19-20。这样不但可以节省内存开销,还可以提高连接数据库的效率以及系统的稳定性。 当有多个用户连接系统的时候,在同一时间有可能会有不止一个用户需要数据库连接。连接数据库不仅要开销一定的通讯和内存资源,还必须完成用户验证、安全上下文配置这类任务,使其往往成为最为耗时的操作,因而对数据库连接的管理显得特别重要,有以下几种管理方法: 一种是为每个连接请求建立一个新的数据库连接, 另一种是在系统初始化时建立一个连接,所有对数据库的通信都通过此连接进行。第一种情况实现简单,在任何时候都可以处理数据库的多用户并发请求, 但问题是当有大量的用户同时使用这个软件时, 每个操作数据库的线程都将创建自己的数据库连接并直接与rdbms 引擎通信, 使 9用结束后各线程将释放自己的连接,系统为了处理这种并发请求而消耗掉大量的系统资源,当系统的内存不足以支持这些连接的通信资源时,会导致系统瘫痪。第二种情况虽然可以消除这种并发的问题,但由于所有操作数据库的线程都使用同一个物理数据库连接,所有通过此连接的请求都被串行执行,因此,当多个并发请求到达服务器时,只有一个请求被处理, 其余请求则被较低层次的套接字和网络协议封锁, 这样的处理方法就可能导致过载时资源耗尽,系统崩溃21。 如果我们使用专门的管理程序来创建和维护数据库连接池, 用数据库连接池对所有的连接进行统一分配和管理就可以解决以上两个问题, 一开始管理程序创建一定数量的数据库连接,所有的这些连接都将连接到同一个jdbc url,即同一个主机、数据库实例及登陆id。当单个线程发出数据库连接请求的时候,通过连接池管理程序得到这些连接中的一个,使用结束后再把这个连接归还给连接池,但同时连接池中的其它连接也是开放的,可以供其他连接请求使用。在小负载的系统中,连接池的功能不能体现,但随着负载的增加系统的性能会体现。 2.3.6 xml 文档技术文档技术 xml(the extensible markup language) 即所谓的可扩展标记语言。 xml是一组定义语义标记的规则,这些语义标记将文档划分为多个部分,并且标记出文档的不同部分。由此可见,xml是一种元标记语言,它可以定义特定领域内的标记语言的语法结构22-23。开发人员可以利用xml在一定的应用领域内自定义所需的标记,这些标记在定义时必须符合xml对语义标记的定义规则,但是标记的具体含义不受限制。正是由于xml的这种灵活性和可扩展性,使得xml的应用在各个领域得到了迅速的推广24。 从开发人员的角度来看,还可以把 xml 文档看成是一棵拥有一定的层次结构,包含有相关数据信息的树。在 xml 树中大致包含了 5 种不同的节点:根节点、元素、文本节点、说明语句和处理指令。其中的根节点是一个抽象节点,包含整个 xml 文档,其子节点包括说明语句、处理指令和文档的根元素;元素指的是 xml 元素,它具有名称、一组属性、一组范围名字空间和一组子节点,这里的属性是与元素相关联的名称/数值对;文本节点是两个标志(或任何其他非文本节点)之间的分析字符数据;处理指令具有目标和值,但没有任何子节点25-26。 2.3.7 jdom 技术技术 jdom 和 dom 一样也是通过树结构访问 xml 文档的方式,从这个意义上讲,它与dom 有些相似。 对 java 程序员来说, 它的许多方面比 dom 要直观, 同时简化了与 xml的交互, 比dom更快。 jdom与sax和dom相比还在于: 它不是一种标准, 而是xml-dev邮件列表上开发出来的, 但目前已经得到广泛应用, 并已经成为正式的 jsr 标准, 于 2004年 9 月 9 日发布了 jdom1.0。对于 xml 文档树型结构中的节点 jdom 树串行化的标准方式,在 jdom 中提供了一个专门用于输出 xml 的类(org.jdom.output.xmloutputter), 10这使得将特定信息以 xml 文件保存变得非常方便27。 图 2.5 是 jdom 核心的 uml 模型。 图 2.5 jdom 核心的 uml 模型 jdom 使用具体的类而不用接口, 大多数节点类型的实例都可以通过相应的构造函数实现。在 jdom 中提供了 10 个基本类用来表示 xml 文档中的不同节点。其核心部分包括表示文档节点的 document 类、表示元素节点的 element 类、表示属性节点的 attribute类、表示文本节点的 text 类和表示名字空间节点的 namespace 类等28。jdom 将 xml文档表示成一个 document 对象,该对象含有一个表示根元素的 element 对象;每一个element 对象又含有一个 text 对象和其子 element 对象。此外,属性和名字空间存在于单独的列表中。xml 文档中的内容可以通过用 getcontent()方法来访问。开发人员还可以用重载 addcontent()的方法将内容添加到元素或文档中,或用重载 removecontent()的方法将其从树中删除。所有的核心节点类都有相应的读取和设置方法29。 由于 jdom 是基于 java 的特定文档模型,因而利用 jdom api 操作 xml 文档能够充分发挥 java 的平台无关性,便于应用程序在不同计算机上进行移植。从而很好的实现java 与 xml 优点的综合,是一款非常优秀的操作 xml 文档的工具,故选用 jdom 来解析 xml 文档。 113 系统的详细设计系统的详细设计 3.1 系统的基本功能设计系统的基本功能设计 本系统是基于 c/s 模式设计的, 功能主要划分为服务器端和客户端两大模块。 在实现过程中主要从服务器端和客户端两个方面入手。 3.1.1 服务器端基本功能设计服务器端基本功能设计 作为一个多用户的即时通讯软件, 做好服务器端的各项管理工作显得非常重要。 比如,对系统管理员的管理,对用户的管理,数据库数据的管理,以及对服务器的开启和关闭的管理。为了使系统能保持长期的稳定运行,本系统中设置了两级管理员,对用户以及数据库进行管理和维护。以下是服务器端的功能设计: (1)管理员登录 根据系统需求, 设置了两个管理员的等级。 针对不同的管理员有两种不同的登录方式:超级管理员登录,普通管理员登录。登录方式由管理员自己选择,但每个管理员都只能以与其等级对应的登录方式登录。 (2)开启服务 每一个管理员都具有开启服务程序的功能,这里服务是指专门为 cqq 用户开启的功能。具体包括以下几种功能: 接收并响应用户登录请求 给用户发送好友上、下线通知 接收并响应用户申请号码请求 接收并响应用户下载好友基本资料请求 转发、存储用户给好友的消息 接收并响应用户添加好友请求 接收并响应用户下线请求 接收并响应用户修改个人资料请求 给用户发送系统消息 (3)关闭服务 每一个管理员都具有关闭服务程序的功能,有时为了维护服务器,必须先关闭服务,所以关闭服务程序为一项不可少的功能。 当服务程序被关闭后, 客户端所具有的所有功能都不能使用。 (4)修改管理员密码 原始密码是由超级管理员在创建管理员的时候设定, 而使用者可以自己重新修改。 这样也提高了系统的安全性。 12(5)查看管理员 为了保证所有管理员的数据安全, 管理员的名单及其所有的资料全部都是保密的, 除了超级管理员之外,谁都没有权利知道。所以只有超级管理员才有这一个功能。而查看方式有两种,一种是指定查看,只显示单个被查看对象。另一种是全部查看,显示所有普通管理员。 (6)创建管理员 除了超级管理员之外,其余管理员(也就是普通管理员)统一由超级管理员来手动创建。而普通管理员不具备这种创建与自己同级管理员的功能,它们只有创建 cqq 用户的权限。 (7)删除管理员 为了更好地保证系统的安全性,赋予超级管理员删除普通管理员的功能。比如说,当某个管理员的密码等被泄露出去,或者出现其它问题,超级管理员就可以删除它,以防有人恶意破坏。 (8)查看 cqq 用户 查看 cqq 用户是所有管理员都具有的功能,这主要是为普通管理员开放的功能,因为超级管理员只是注重对普通管理员的管理。 为了提高系统的安全性, 超级管理员一般只用于进行普通管理员不能做的操作,也就是对普通管理员的管理等操作。在其它情况下,一般只用普通管理员。因为登录的次数越多,帐号和密码被泄露出去的可能性就越大。 (9)创建 cqq 用户 管理员可以任意创建一个还没有被注册的 cqq 号,这样申请号码的好处就在于,管理员可以根据需要创建特定的号码。 当然, 如果没有必要最好还是通过客户端申请的方式来获取 cqq 号码。数据库对客户端申请号码方式的管理策略,要比管理员手动创建号码方式的管理策略要好一些。 (10)删除 cqq 用户 管理员可以任意删除 cqq 用户,当然,只是在有必要的时候才进行删除,比如,某些不合法的用户进行了一些对系统有害操作时, 管理员就可以使用该功能。 管理员不能随心所欲的删除合法用户。 (11)关于系统 提供一些系统的基本信息。如作者、版本号、版权等。 (12)退出系统 当退出系统的时候,整个服务管理器都将关闭,客户服务功能也不例外。服务器一关闭,所有客户访问服务器的操作都将不能进行,除了在进行服务器和数据库维修、升级以外,一般不使用这一功能。 133.1.2 服务器端系统结构图服务器端系统结构图 服务器端功能主框架如图 3.1 所示。 服务器端 退出系统查看cqq用户关于系统创建cqq用户删除cqq用户修改管理员密码关闭服务管理员登录开启服务删除管理员查看管理员创建管理员图 3.1 服务器端功能结构图 开启服务的功能主要是指服务器提供给用户的功能,用户所有访问服务器的功能全 部都在开启服务模块里实现,其功能结构如图 3.2 所示。 开启服务的功能 接收并响应用户登录请求 给用户发送好友上、下线通知 接收并响应用户申请号码请求 接收并响应用户下载好友资料请求转发、存储用户发送给好友的消息接收并响应用户添加好友请求接收并响应用户下线请求接收并响应用户修改个人资料请求 图 3.2 开启服务的功能结构图 143.1.3 服务器端用例模型设计 服务器端用例模型设计 系统中有两级管理员, 而且功能比较复杂。 为了对服务器端的流程和管理员之间的相互作用做详细的说明, 使用用例图建立一个精确的模型来表示服务器端的需求, 设计出服务器端的用例关系图如图 3.3 所示。 普通管理员(from use case view)退出系统修改密码关闭服务删除用户创建用户开启服务管理员登录查看用户查看管理员创建管理员删除管理员超级管理员(from use case view) 图 3.3 服务器端用例图 3.1.4 客户端基本功能设计客户端基本功能设计 (1)申请 cqq 号码 第一次登录的用户,可以打开申请 cqq 号功能,提交自己的基本资料(如用户名、真实姓名、身份证号码、密码、年龄、性别等)到服务器。申请成功后服务器将 cqq 号发送给用户。 (2)用户登录 用户有两种登录方式:一种是上线方式,用户以该方式登录时,将处于上线状态,该用户的好友可以看见其上线。 另一种是隐身方式, 用户以该方式登录时, 将处于隐身状态,该用户的好友不知道该用户是否已在线。 用户登录时,服务器将把该用户在线好友和不在线好友的名单,返回给用户。客户端将以不同的方式显示两种状态的好友。 15(3)好友上、下线提示 如果用户的好友以非隐身方式登录, 则用户可以收到用户上线的提示, 提示信息显示在桌面右下角,并将该好友设为在线状态。在线状态的好友下线时,用户也能收到好友下线提示,并将该好友设为不在线状态。 (4)下载好友资料 用户登录以后,要在客户端读取好友资料,显示在聊天主面界上,当客户端不存在某个好友的资料时(如果是第一次在某计算机上登录,则不存在其所有好友的资料。又有可能某好友的资料被删除。),将发送请求给服务器,服务器收到请求后,返回该好友的资料。 (5)给好友发送聊天消息 cqq 用户可以给任意一个好友发送消息, 不管该好友是否在线。 如果该好友在线 (包括隐身状态),服务器会将消息直接转送给该好友,如果该好友不在线,服务器将会把消息存储到数据库,等该好友上线时,再把消息发送给他。 (6)接收服务器转发来的好友消息 用户可以接收好友的聊天消息, 包括即时消息和留言 (用户不在线时好友发送来的消息)。 (7)查看、更新好友资料 用户登录后, 可以查看任意一个好友的基本资料。 但他查看到的好友资料是存放在本机上,而不是从服务器直接下载的。当该用户的某好友修改了个人基本资料以后,不会更改该用户客户端存放的数据。 就会出现客户端和服务器端的数据不一致的情况, 这时用户可以点击更新来重新下载好友资料,使客户端和服务器端的数据保持一致。 (8)查看聊天记录 用户登录以后,可以查看他与好友的聊天信息,用户可以看到以前所有的聊天记录。为了减轻服务器的负担,系统把用户的聊天记录存放在客户机上。 (9)修改个人资料 除了 cqq 号码以外,用户可以修改所有的资料。修改资料分为两个模块:一是修改基本资料,二是修改密码。当用户发送修改请求后,服务器会将新的资料保

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论