基于Java的即时通讯系统设计与实现毕业作品Word格式文档下载.docx
《基于Java的即时通讯系统设计与实现毕业作品Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于Java的即时通讯系统设计与实现毕业作品Word格式文档下载.docx(42页珍藏版)》请在冰豆网上搜索。
即时通讯的第二波,属于基础产品应用期,主要由美国开始蔓延全世界;
2000年前后,全球范围内的IM普及已经展开,在美国,AOL收购ICQ,微软推出MSN,雅虎推出Messenger。
不同从业者的加入极大的推动了IM产品在应用层面的发展,逐渐地,用户的交流已经不满足于单纯的文字沟通,他们需要直观表达丰富的感情,以及传递声音和图像。
针对用户的需求变化,IM产品新增了表情设计,再到后来,IM实现了语音和视频交流,增值功能和服务也越来越多,IM在这个阶段得到了高速的成长[1]。
在经过前9年的技术培育期、基础产品应用期之后,现如今的即时通讯工具,不仅更加丰富了自身的交流形式和开发出更多的新应用,同时也正在整合各种已有的通信方式,如Email、短信等,逐渐使自身成为一个全方位的网上即时交流平台,一个以用户体验为显著特征的崭新阶段——即时通讯社区文化正在成为现实。
即时通讯之所以深受青睐,完全得益于它在沟通中为用户带来的极大满足。
随着移动和互联网越来越深入的走进生活,人们渴望在任何时间、任何地点将尽可能多的通讯工具融合在互联网同一个沟通环境下,实现各种通讯工具的互补和整合。
人们不再局限于单一的网上或网下的沟通,而是希望通过跨平台、多终端的通讯技术来实现一种集声音、文字、图像的低成本高效率的通讯服务,即时通讯将担负起这种重要责任[2]。
作为即时通讯的一种运用的聊天软件,它继承了即时通讯软件的优点,它具有文字聊天、语音聊天、传送文件、拨打电话、远程协助、视频聊天、邮件辅助、发送短信、浏览咨询等等功能。
开发基于桌面的,面向个人的大众化聊天软件,可以满足网民在网络交流的需要,和电话、手机有着异曲同工之妙,但较之电话和手机,聊天软件具有方便快捷,功能强大,交流成本低等优点
1.1即时通讯系统设计背景
自从上世纪中叶第一台计算机诞生以来,计算机越来越走进人们的生活当中,特别是随着计算机网络的发展,把全世界的人们紧密的联系在一起,大大的扩展了计算机的功能。
由于互联网的方便快捷的优点,人与人之间的交流也更多的是在网络上进行。
在这样的时代背景下,即时通讯软件也顺势而生。
即时通讯,在过去,网民通常都会将IM等同于一个网络寻找朋友的工具、聊天的工具。
但是,随着即时通讯软件功能和应用的逐渐丰富和完善,IM已经演化成一个综合的桌面通讯平台。
目前,无论从娱乐角度还是从商务角度来看,即时通讯工具在国内外已经成为了一种富有价值的通讯工具,并且在一些公司的每天业务运作中发挥着重要的作用。
桌面即时通讯软件是一个潜力巨大的支付窗口,它拥有能够把眼球转化成信息流乃至现金流的魔力。
目前的即时通讯软件已经向游戏、音乐、社区,甚至门户等领域的发展,人们已经更乐于用这些即时通讯软件来交朋结友,发送手机短信,甚至传送文件[3]。
1.2即时通讯系统国内外发展状况
中国的大部分网络用户都拥有自己的QQ号码。
腾讯计算机系统有限公司成立于1998年11月。
1999年2月,腾讯自主开发了基于Internet的即时通信网络工具——腾讯即时通信TencentInstantMessenger,简称TIM或腾讯QQ。
腾讯QQ经过三年时间的发展,到2002年,其用户群成为中国最大的互联网注册用户群,注册用户达到1亿6000万,其中活跃用户总数超过5000万。
自此腾讯QQ成为中国最大的即时通信服务提供商。
腾讯公司是中国最早也是目前中国市场上最大的本土互联网即时通信软件开发商。
公司成立7年多以来,一直以追求卓越的技术为导向,始终处于稳健、高速发展的状态。
腾讯QQ超过4.3亿的注册用户群体现了网络用户对腾讯QQ这一聊天工具的广泛应用。
在当今市场经济高速发展的前提下,腾讯QQ也在不断自我完善,渐渐地演变为一个人性化、市场化的多功能的聊天工具软件,它可以给网络聊天用户带来越来越多的人性化服务:
从原来单一的文字聊天过渡到集语音、视频、文件传输等多功能于一身的聊天软件[4]。
ICQ和MSN是在国外比较盛行的即时聊天工具,腾讯QQ的开发对MSN和ICQ都进行了借鉴。
ICQ是ISeekYou(我找你)的缩写,最初是一家以色列公司开发出来的免费软件,中文名称目前可以称之为“网络呼叫器”,它在全球拥有超过4000万的用户。
事实上这种软件最主要的功能就是让用户知道网络上的朋友现在有没有上线(前提是对方也有安装ICQ),然后可以互送Messages(消息)交谈或是交换档案等等,比电子邮件更具即时性。
正如一位ICQ软件的最初程序设计员所说:
“当你登录因特网之后,你周围都是些自己熟悉的人,而且,你还可以和他们分享这种体验,这的确是一件令人激动的事情[5]。
”
MSN是微软推出的聊天软件,是一套类似ICQ的网上即时通讯软件,它以最简单的方式为用户提供强有力的即时消息支持,同时能使MicrosoftOutlookExpress(R)和MSNHotmail(R)变得更简单易用。
MSNMessengerService还可使用户间的联机交谈变得更加轻松愉快,了解谁在联机以及查看用户何时联机并与其交换即时消息。
用户间可以进行单独的聊天,或者在同一个对话窗口中与多达四个的联系人进行聊天。
自动的输入指示器可让用户知道何时联系人正在输入答复,还可以进行全球电话呼叫——以非常低的费用呼叫世界的任何地方。
用户可以选择所要使用的电话服务提供商,从服务提供商的列表中选择最适合的提供商。
用交谈取代键盘输入,使用计算机上的话筒和扬声器就可以和位于世界各地的朋友进行交谈,甚至可以呼叫联系人将文本消息发送到联系人的移动电话和传呼机上(注:
此特性仅适用于美国和加拿大),而进入“聊天室”结识新朋友,或加入与名人聊天,此特性在所有地区都适用。
用户可以使用MSNMessenger与朋友交换照片、喜爱的音乐或任何其他文件,也可以监视新的电子邮件并查看用户有多少新的电子邮件。
MSNMessenger能在收到新的Hotmail邮件时通知用户,还能邀请联系人进行联机DirectPlay兼容游戏[6]。
1.3即时通讯系统的未来研究方向
首先是即时通讯的应用将更加的丰富化;
最近几年,可以清楚的感觉到,随着即时通讯工具本身应用越来越丰富,用户对即时通讯聊天之外的娱乐需求正在不断增长,更加丰富化的娱乐应用已经成为即时通讯未来重点的发展方向。
为了满足用户日益旺盛的娱乐应用需求,许多即时通讯服务提供商都在不断的开发基于即时通讯平台的丰富化应用,例如:
虚拟形象、魔法表情以及虚拟宠物等新的应用层出不穷。
其次是即时通讯将更加汇聚人气,体现社区化和互动性;
分析显示,即时通讯之所以在近几年发展迅猛,除了其本身的功能强大之外,互联网用户迅速汇聚的人气也是重要的推动因素,据CNNIC统计报告显示,截止到2004年6月30日,我国上网用户总数为8700万,上网计算机达到3630万台,即时通信服务正和电子邮件、搜索引擎、上网浏览资讯等网络应用一样最大化的融入到了网民的日常生活中。
人气汇聚所带来的就是社区化和互动性。
据有关专家预测,在线生活在未来两三年内将成为互联网应用的热点,网络用户可以在网上进行买房,买车,养宠物等等与真实生活相似的网络生活。
同时,一个纯粹的通讯工具,正在被赋予新的内涵,成为一个丰富的个人空间,这里面不仅有可以聊天的朋友,还有游戏、新闻、社区、日记本等等。
互联网企业在网络上开办校友录,开创社区,为网络用户提供日记撰写的平台,让用户建立自己的blog,正是为了满足这些网络用户对在线生活的需求。
第三,即时通讯与本地化应用的融合;
随着即时通讯产品个人属性的加强和应用范围延伸,与本地化应用的融合将成为即时通讯产品的主要发展趋势。
这种融合的趋势将首先体现在即时通讯服务商对本地用户资源的管理、分析,对本地文化的理解,以及基于本地用户需求基础上,对产品应用的不断优化[7]。
1.4本文工作
随着用户对软件功能的需求不断提高,即时通讯的产品也不断地更新换代。
即时通讯的发展不论是在基础应用方面还是在扩展应用方面都有着飞跃。
为了满足用户的需求,包括腾讯公司的聊天软件QQ在内,许多即时性聊天工具都推出了语音聊天、视频聊天功能模块。
本文主要对聊天软件的文字聊天和文件传送等相关功能的实现原理进行了研究。
本文基于java即时通讯系统的设计与实现,通过java语言的编程,来实现即时通讯系统中即时在线聊天通信文件传送交流沟通的功能。
本系统主要采用client/server模式架构,采取SOCKET技术来实现客户端与服务器端的联系交流工作,通过数据库的建立,来最终实现客户之间的数据交流沟通。
本系统能够很好的满足用户之间信息交流和文件共享的要求,在用户聊天沟通,信息互动等方面能够很好的展现自己的功能。
通过这次的系统开发和设计后,也使我对于JAVA语言有了更深层次的认识,并使自己的实践开发能力有了质的提高。
通过这次的开发,也发现了自己存在的问题,开发能力不强,分析能力不足,看待问题的思考角度不够广阔,专业技能知识不够扎实等缺点。
这些都需要我在今后的学习当中不断地去改正,更加的完善改进自己所做的程序系统。
2.实现即时通讯系统关键技术
2.1JAVA简介
Java语言是SUN公司于1995年5月推出的新一代面向对象的计算机通用编程语言,是继WWW之后又一引起世界轰动的产品。
Java语言的特点是跨平台和强大的网络编程功能。
在Java语言诞生之前,Internet已存在,所以Java语言本身就封装了大量进行网络编程的类库,使得网络编程功能强大,同时又简化了网络编程的操作。
因此利用Java语言可以开发出功能强大的网络应用程序[8]。
2.1.1JAVA的发展历史
1990年12月,SUN公司成立了一个名为(GreenTeam)绿色项目的小组,JamesGosing(也就是Java之父)也是这个小组的成员。
这个小组的主要目标是开发一种能够在消费性电子产品上运行的分布式的系统架构,以掌握这种应用的趋势。
1992年9月3日(GreenTeam)绿色项目小组展示了Start7手持设备,它类似于今天的PDA,但是功能比PDA还强大,拥有5寸的彩色LCD显示屏、PCMCIA接口并且支持无线通信。
这个设备中的程序是使用OAK程序设计语言实现的,OAK名字的由来是因为JamesGosing的办公室窗外有一棵橡树,根据这棵橡树而命名。
但是,在注册商标时却发现这个名字已经被别的公司占用了,后来更名为Java。
1993年,全世界第一个Internet网页浏览器Mosaic诞生了,JamesGosling认为Internet与Java的特性不谋而合,便使用Java在Internet平台上编写出高交互性的网页程序,这就是JavaApplet。
JDK附带的Applet的DEMO程序,读者可以在JDK安装文件夹中找到更多更有趣的DEMO。
在那个年代,还没有其他的程序设计语言能够做到这一点。
1995年,OAK被命名为Java编程语言,并于5月23日正式对外发布JDK(JavaSEDevelopmentKits)1.0版本,Java语言正式诞生了。
Java是一种极富创造力的面对对象的程序设计语言,同时也是一种跨平台的程序设计语言。
用Java语言编写的程序,可以运行在任何平台和设备上,例如跨越IBM个人电脑、Windows视窗系统、MAC苹果系统、手机应用程序、各种电子设备等系统和硬件平台。
Java非常适合于企业网络和Internet环境,并且已成为Internet中最有影响力、最受欢迎的编程语言之一[9]。
2.1.2JAVA命令
功能:
Java归档工具
语法:
jar[命令选项][manifest]destinationinput-file[input-files]
jar工具是个java应用程序,可将多个文件合并为单个JAR归档文件。
jar是个多用途的存档及压缩工具,它基于ZIP和ZLIB压缩格式。
然而,设计jar的主要目的是便于将javaapplet或应用程序打包成单个归档文件。
将applet或应用程序的组件(.class文件、图像和声音)合并成单个归档文件时,可以用java代理(如浏览器)在一次HTTP事务处理过程中对它们进行下载,而不是对每个组件都要求一个新连接。
这大大缩短了下载时间。
jar还能压缩文件,从而进一步提高了下载速度。
此外,它允许applet的作者对文件中的各个项进行签名,因而可认证其来源。
jar工具的语法基本上与tar命令的语法相同。
命令选项:
-c:
在标准输出上创建新归档或空归档。
-t:
在标准输出上列出内容表。
-x[file]:
从标准输入提取所有文件,或只提取指定的文件。
如果省略了file,则提取所有文件;
否则只提取指定文件。
-f:
第二个参数指定要处理的jar文件。
在-c(创建)情形中,第二个参数指的是要创建的jar文件的名称(不是在标准输出上)。
在-t(表(或-x(抽取)这两种情形中,第二个参数指定要列出或抽取的jar文件。
-v:
在标准错误输出设备上生成长格式的输出结果。
-m:
包括指定的现有清单文件中的清单信息。
用法举例:
“jarcmfmyManifestFilemyJarFile*.class”
-0:
只储存,不进行ZIP压缩。
-M:
不创建项目的清单文件。
-u:
通过添加文件或更改清单来更新现有的JAR文件。
例如:
“jar-uffoo.jarfoo.class”将文件foo.class添加到现有的JAR文件foo.jar中,而“jarumfmanifestfoo.jar”则用manifest中的信息更新foo.jar的清单。
-C:
在执行jar命令期间更改目录。
“jar-uffoo.jar-Cclasses*”将classes目录内的所有文件加到foo.jar中,但不添加类目录本身。
程序示例
1:
将当前目录下所有CLASS文件打包成新的JAR文件:
jarcffile.jar*.class
2:
显示一个JAR文件中的文件列表:
jartffile.jar
3:
将当前目录下的所有文件增加到一个已经存在的JAR文件中[10]:
jarcvffile.jar*
2.2SQLSERVER简介
SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,并于1988年推出了第一个OS/2版本。
SQLServer近年来不断更新版本,1996年,Microsoft推出了SQLServer6.5版本;
1998年,SQLServer7.0版本和用户见面;
SQLServer2000是Microsoft公司于2000年推出的最新版本。
SQLServer特点:
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQLServer与WindowsNT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。
SQLServer也可以很好地与MicrosoftBackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows95/98的膝上型电脑到运行Windows2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQLServer提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMSSQL
Server2000新特性:
1.支持XML(ExtensiveMarkupLanguage,扩展标记语言)
2.强大的基于Web的分析
3.支持OLEDB和多种查询
4.支持分布式的分区视图[11]
2.3Socket技术
Socket是著名的网络应用编程接口(API)之一,而Java语言是网络编程的主要语言,提供了强大和独特的网络通讯支持机制和能力。
在Java网络编程中,Socket层次,即传统网络编程经常采用的方式,通过在Client/Server(客户机/服务器)结构的应用程序之间建立Sock-et套接字连接,然后在连接之上进行数据通信,是一种经常采用的通信模式。
套接字类型Socket根据其传输数据类型的不同,可以分为以下三种类型:
1)字节流套接字(Socket-stream),提供了一个双向的、面向连接的、可靠的、无差错的字节流通信,无重复的发送且按发送顺序接收。
内设流量控制,避免数据流超限;
不保持信息边界。
实现这种特性的通信协议在收到差错时将重传信息,若在连接已经切断后再发数据则返回错误信息,FTP协议即采用流式套接字;
2)数据报套接字(SocketDgram);
提供了一个无连接服务,每个数据包都有地址。
数据包以独立包形式被发送,但不保证顺序,不保证可靠或不重复。
网络文件系统NFS使用数据报式套接字。
3)原始数据套接字(SocketRaw),该接口允许对较低层次协议,如IP、ICMP直接访问。
这不是给普通用户使用的,而是给要开发新协议或对低层协力议有兴趣的人使用[12]。
2.4Eclipse简介
Eclipse是一种可扩展的开放源代码IDE。
2001年11月,IBM公司捐出价值4,000万美元的源代码组建了Eclipse联盟,并由该联盟负责这种工具的后续开发。
集成开发环境(IDE)经常将其应用范围限定在“开发、构建和调试”的周期之中。
为了帮助集成开发环境(IDE)克服目前的局限性,业界厂商合作创建了Eclipse平台。
Eclipse允许在同一IDE中集成来自不同供应商的工具,并实现了工具之间的互操作性,从而显著改变了项目工作流程,使开发者可以专注在实际的嵌入式目标上。
Eclipse为工具开发商提供了更好的灵活性,使他们能更好地控制自己的软件技术。
Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。
同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。
可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在[13]。
2.5系统运行环境要求
系统的性能要求通常指系统需要的存储容量以及后援存储,重新启动和安全性,运行效率等方面的考虑。
硬件系统环境:
1.客户机无特殊要求,只要能上连接互联网即可;
2.服务器端处理器:
Intel奔4,内存:
512M或更大,硬盘:
40G或更大,
软件系统环境:
1.客户机上为Windowsvista/xp/7系统即可;
2.服务上为Windowsvista/xp/7,MicrosoftSQLSERVER2000,MicrosoftOffice2003
3.系统分析
3.1可行性研究
3.1.1技术可行性分析
JAVA技术日趋成熟,JAVA的平台无关性使得用JAVA写的应用程序不用修改就可在不同的软硬件平台上运行,它支持数据分布和操作分布这两种分布性,对于前者,Java提供了一个叫做URL的对象,利用这个对象,你可以打开并访问具有相同URL