ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:265.98KB ,
资源ID:11336396      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11336396.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java即时聊天系统的设计与实现.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Java即时聊天系统的设计与实现.docx

1、Java即时聊天系统的设计与实现基于Java即时聊天系统的设计与实现摘要:计算机网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时聊天工具在实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。本课题研究的是支持内部网络交流的系统网络即时通讯系统。该系统使用Java语言进行编程。系统采用C/S结构模式,支持局域网和Internet。该系统采用软件工程的瀑布模型进行开发,分别讨论了系统的需求分析、概要设计、详细设计和编码、以及整个系统的运行和测试。关键词:即时聊天;系统;Java;C/S Abstrac

2、t: The rapid development of computer network technology today, more immediate means of communication by people of all ages. Real-time chat tool in achieving the transmission of video and audio information, so that members can collaborate remotely intuitive, real audio and visual communication at the

3、 same time, use of multimedia technology, it can also help users to work in all kinds of information processing. Study of this issue is to support the exchange of internal network systems - network instant messaging system. The system uses Java programming language. System uses the C / S structure m

4、ode, support for LAN and Internet. The system uses the waterfall model of software development projects were discussed system requirements analysis, outline design, detailed design and coding, and run and test the whole system. Finally, the paper concluded. Of course, the system there are some imper

5、fections, and seek to study and work in the future be amended so that the system actually used in a variety of network efficiency.Keywords:Instant Messager; System; JAVA; C/S1 前言交流对于人类社会及其每个成员都至关重要。直接交流的方式包括语言、文字等,而远程交流还需借助于一些先进的工具如电话、网络等。本课题研究的是支持内部网络交流的系统网络即时通讯系统。该课题在实施的过程中需要使用Java语言。1.1 课题选题背景计算机

6、技术、网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时通讯工具在实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。大家都知道,网络上常用的即时通讯工具之一有ICQ。其实,ICQ是英文“I seek you”的简称,中文意思是“我找你”。ICQ最大的功能便是即时信息交流,只要记得对方的号码,上网时可以呼他,无论他在哪里,只要他上网打开ICQ,人们就可以随时交流。目前即时聊天系统种类众多,功能也较为齐全。该课题现在所研究的即时通讯系统,其目标是定位于企业内部网络,解决企业或单位的沟通及协同的问题,提

7、高工作效率。企业内部员工可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息群发、传送文件、音频视频对话等。系统包括客户端程序和服务器端程序,支持局域网和Internet。企业内部员工之间可以在内部网覆盖的任何地点、任何时间进行即时交流,真正实现企业内部协同工作。使您不必花费大量的时间、金钱聚集到一个地方,通过网络,就能实现面对面的沟通,提高了效率。MSN、QQ等公共消息系统,由于聊天对象及内容的不可控,若在企业内部使用,可能会降低工作效率。而该即时通讯系统将自己的服务器端安装在企业内,并且人员的创建是由系统管理员来完成,因此很好的解决了这个问题。即时通讯带给了更大的互动性,人们在交流彼

8、此的看法、意见时,发现采用你来我往的方式达到的效果最为明显。这就体现了互动性。通过使用及时通讯系统,大家不需要离开电脑,不需要借助其它额外的工具,就可以在线实时地交流工作。1.2即时通信的概念和特点即时通讯(IM)是一个允许两人或多人使用网络即时地传递文字信息、档案、语音与视频交流的终端服务。即时通讯不同于e-mail在于它的交谈是即时的。【1】大部分的即时通讯服务提供了presence awareness的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。在早期的即时通讯程序中,使用者输入的每一个字符都会即时显示在双方的银幕,且每一个字符的删除与修改都会即时的反应在银幕上。这种模式比起

9、使用e-mail更像是电话交谈,充分体现了其实时特性。在现在的即时通讯程序中,为了画面的完整美观和交流方便,交谈中的另一方通常只会在本地端按下送出键(Enter或是Ctrl+Enter)后才会看到信息。1.3即时聊天系统的发展二十世纪七十年代早期,一种较早的即时通讯形式是柏拉图系统(PLATO system)。八十年代,UNIX/Linux的交谈即时信息被广泛的使用于工程师与学术界,九十年代即时通讯更可跨越了操作系统平台交流,1996年11月,首个广泛被非UNIX/Linux使用者用于因特网的即时通讯软件ICQ出现。通常认为ICQ是现在流行使用的即时通讯软件的开山之作。ICQ源于以色列特拉维夫

10、的Mirabils公司。该公司成立于1996年月,也就是在这个时候,四个月后的1996年11月,互联网上最出名,下载使用人数最多的免费软件ICQ诞生了,她是由几个以色列的年轻人制作的,在无人投资的情况下,他们向全球互联网用户提供免费下载使用,到了1998年,Mirabilis公司的ICQ用户已经发展到1200万人,并以每月100万用户的速度增加。这时候,ICQ公司由于其潜在的巨大商业广告价值,已经成为许多大公司争相购买的对象,1998年ICQ公司将自己开发的软件连同用户一起“卖”给了美国在线(AOL),售价2.87亿美元。据美国在线1999年底称,ICQ使用者已达5000万,其中超过三分之二的

11、使用者居住在美国本土以外的世界各地。ICQ造就的实时通信成了互联网世界中发展最快的一个领域。2 涉及的相关技术及协议为了保证课题能正常实施,先来分析一下课题所需要的相关技术和协议。2.1 Java语言经过认真的讨论分析,综合各种计算机高级语言的特征和适应范围,最终决定选择纯面向对象的Java语言来完成毕业论文的设计,下面就技术可行性方面,对Java语言作一简要介绍。Sun公司的口号就是“网络就是计算机”,Java能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用Java语言,可以相对轻松的一天编写一个有条理的网络程序。今天,Java的网

12、络功能正在飞跃发展,不断有新的特性增加到这个有价值的基础上,JavaSoft实验室正在不断努力使Java更加完善。就Java语言的主要特点,本人归纳如下:Java程序设计的开发过程与运行环境Java是解释型的高级编程语言,所以Java程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。这里要提到,Java应用程序的开发周期包括编译、下载、解释和执行几个部分。Java编译程序将Java源程序翻译为JVM可执行代码字节码。这一编译过程同C/C+的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的

13、引用转换为特定的内存偏移量,以保证程序运行。Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了Java的可移植性和安全性。【2】2.2 C/S模式介绍20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。【3】相对

14、于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位:一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力。客户机和服务器之间通过相应的网络协议来进行通讯。客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。这种模式的优点充分利用了客户机的性

15、能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。C/S模式是目前占主流的网络计算模式。该模式在操作过程中采取的是主动请示方式:首先服务器方要先启动,并根据请示提供相应服务(过程如下):(1)打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。(2)等待某个客户请求到达该端口。(3)接收到重复服务请求,处理该请求并发送应答信号。(4)返回第二步,等待另一客户请求。(5)关闭该服务器。客户端:(1)打开一个通信通道,并连接到服务器所在主机的特定端口。(2)向服务器发送服务请求报文,

16、等待并接收应答;继续提出请求。(3)请求结束后关闭通信通道并终止。分布运算和分布管理是客户机/服务器模式的特点。最后选择了C/S模式。2.3 Hibernate框架简介Hibernate是一种Java语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL 的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。 主要作用有:Hibernate 不仅管理Java 类到数据库表的映射(包括从Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL 和JDBC 处理数

17、据的时间。【4】它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用Hibernate。在应用方面,Hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,它既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB(Enterprise JavaBeans是Java应用于企业计算的框架)的J2EE架构中取代CMP,完成数

18、据持久化的重任。3 系统需求分析前面两章介绍了课题的选题背景和相关的技术基础和协议。在本章中将讨论一下即时通讯系统的需求分析。3.1即时聊天消息的一般需求(1)所有实体必须至少使用一种消息格式;(2)一般即时消息格式必须定义发信者和即时收件箱的标识;(3)一般即时消息格式必须包含一个让接收者可以回消息的地址;(4)一般即时信息格式必须允许对信息有效负载的编码和鉴别(非ASCII内容);(5)必须提供扩展和注册即时消息格式的模式的机制。协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。(1)即时消息的传输必须足够的迅速;(2)即时消息的内容必须足够丰富;(3)即时消

19、息的长度尽量足够的长。3.2 即时消息的协议需求协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。即时通讯协议,参与的双方或者多方是即时通讯的实体。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且遵循的。好的协议要求清楚、完整,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。3.3 即时消息的安全需求A发送即时消息M给B,有以下几种情况和相关需求:(1)如果无法发送,A必须接到确认;(2)如果M被投递了,B只能接受M一次;(3)

20、协议必须为B提供方法检查A发送了这条信息;(4)协议必须允许B使用另一条即时信息,回复信息;(5)协议必须为A提供方法保证没有其他个体C可以篡改M;3.4 即时信息加密和鉴别(1)协议必须提供方法保证通知和即时消息的置信度,未被监听或者破坏;(2)协议必须提供方法保证通知和即时消息的置信度,未被重排序或者回放;(3)协议必须提供方法保证通知和即时消息被正确的实体阅读;(4)协议必须允许客户自己使用方法确保信息的不被截获,不被重放和解密。3.5 即时通讯系统需求3.5.1 注册需求(1)即时通讯系统拥有多个账户,允许多个用户注册;(2)一个用户可以注册多个ID;(3)注册所使用的帐号类型为字母I

21、D。3.5.2 通讯需求(1)用户可以传输文本消息;(2)用户可以传输RTF格式消息;(3)用户可以加密/解密消息等。4 系统设计在这里我们将该即时通讯系统命名为CHAT,现在对该系统进行总体设计。采用客户机/服务器(C/S)的模式来设计,是一个2层的C/S结构:应用程序服务器应用程序客户端,其分层机构如图1所示。图1 2层C/S结构示意图客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接

22、口。若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。服务层又叫做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。4.1即时聊天系统的实施原理4.1.1 工作方式和技术原理典型的IM工作方式如下:登陆CHAT通讯服务器,获取一个自建立的历史的交流对象列表(同事列表),然后

23、自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,从技术上来说,聊天系统的基本技术原理如下:第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(Online Presence)。第二步,根据用户A存储在IM服务器上的好友列表(Buddy List),服务器将用户A在线

24、的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。4.1.2 通讯方式(1)在线直接通讯如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,

25、然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通讯方式(Peer To Peer)。【5】(2)在线代理通讯用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。4.2软件设计流程因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤:先进行需求分析,再是系统设计,然后是详细设计与编码,其次是软件的测试,最后是软件的运行和维护。【6】在实际过程中这些步骤经常是重叠

26、和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图2所示。需求分析系统设计详细设计与编码软件测试 软件运行与维护图2 即时通讯系统开发流程图4.3功能模块划分该即时聊天工具按如下过程完成通信:(1)客户向服务器注册,告知服务器该客户监听某主题;(2)客户注册之后,向服务器发送消息;(3)服务器再把消息发送给所有监听此主题的客户。根据以上描述,该系统功能模块图请见图3。即时聊天系统服务器端客户端建立连接存储数据监听用户新建用户登 录通讯交流图3 通讯系统的功能模块4.3.1 服务器端由图3可知服务器端完成至少3大功能:建立连接、存储数据和监听客户。这3大功能的具体含义如

27、下:(1)建立一个ServerSocket连接,不断侦听是否有客户端连接或者断开连接。(2)服务器端是一个信息发送中心,所有客户端的信息都传到服务器端,再由服务器根据要求分发出去。(3)数据库数据操作包括将用户信息存储到数据库等。4.3.2 客户端客户端要完成4大功能:新建立用户、用户登录、通信交流。这些功能的含义如下:(1)新建立用户:客户端与服务器端建立通信信道,向服务器端发送新建用户的信息,接收来自服务器的信息进行注册。(2)用户登录:客户端与服务器端建立通信信道,向服务器端发送信息,完成用户登录。(3)通信交流:客户端可完成的信息的编辑、发送和接收等功能。4.4 数据库概要设计因为本系

28、统采用的是2级C/S结构模式,所以,为了减少服务器的存储量,方便程序设计,本系统只对用户信息进行存储。利用JAVA中的hibernate框架技术进行存储。在Hibernate中,各表的映射文件.hbm.xml可以通过工具生成,在本系统中,用户表信息可以用Xml代码实现。用户表(user)表1 用户信息表名称字段名称类别主键非空用户编号id数字是是登录名CustName文本否是登录密码CustPassword文本否是年龄Age文本否是性别Sex文本否是电子邮箱email文本否是5 详细设计5.1 服务器端的设计与实现作为C/S模式下的系统开发,很显然服务器端程序的设计是非常重要的。下面就服务器端

29、的相关程序模块进行设计,并一定程度上实现了相关功能。5.1.2 主服务器类的设计设计服务器时需要考虑如下几个因素:(1)服务器的运行速度;(2)服务器的响应速度,包括新建连接和发送数据的响应速度;(3)I/O吞吐量;(4)其他:流量控制(QoS)、安全性。针对TCP/IP协议的数据结构,设计服务器的程序结构需要考虑以下的因素:(1)多线程;(2)多进程;(3)单线程。主服务器类实现了服务器端的多线程,使用SeverSocket s=newServerSocket(1001)语句在1001端口创建套接口;使用new ServerThread(socket)语句创建新的线程。主服务器类调用Serv

30、erThread类,而每个ServerThread实体就是一个独立的线程,刚好对应于客户端的连接请求响应线程。服务器端有一个(或多个)进程在指定的端口等待客户的连接信息,一旦连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务器端发出连接请求。实现界面如图4。图4 服务器启动界面现就其中一些核心代码进行讲解。public class AppServer extends Thread其中public是JAVA的关键字,用来表示该类是共有,在整个程序里都可以访问到它;Class表示类定义,它后面接着用户定义的类的类名为AppServer;extends表示继承的意思,

31、他后面的类Thread是子类,能够继承父类AppServer所定义的一些变量。这条语言表示的意思就是声明一个公共类AppServer,用子类Thread继承父类AppServer中的一些变量。static boolean newMessage。其中,static是关键字,表示静态变量,Boolean表示变量类型为布尔型,变量名为newMessage。这条语句的意思是定义一个静态变量newMessage,它的类型为布尔型。值得强调的是布尔型数据只有两个值true和false,并且它们不对应人数整数值。if(start) 已启动.); log(null,服务器已启动. ); else 关闭中.); 这是一条if条件判断语句,它表示变量start如果不为空,那么执行语句第一个大括号中的语句,如果为空,则执行else中的语句。其中,log为输出语句,表示在窗口中输出“服务器已启动”信息。public void run() try while (start) Socket client = serverSocket.acce

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1