基于Java即时聊天系统的设计与实现毕业论文_第1页
基于Java即时聊天系统的设计与实现毕业论文_第2页
基于Java即时聊天系统的设计与实现毕业论文_第3页
基于Java即时聊天系统的设计与实现毕业论文_第4页
基于Java即时聊天系统的设计与实现毕业论文_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

内江师范学院本科毕业论文(设计)1目录1前言411课题选题背景412即时通信的概念和特点413即时聊天系统的发展52涉及的相关技术及协议521JAVA语言522C/S模式介绍623HIBERNATE框架简介73系统需求分析731即时聊天消息的一般需求732即时消息的协议需求833即时消息的安全需求834即时信息加密和鉴别835即时通讯系统需求84系统设计841即时聊天系统的实施原理942软件设计流程1043功能模块划分1144数据库概要设计115详细设计1251服务器端的设计与实现12512主服务器类的设计12512登录验证模块14513注册处理模块1452客户端的设计与实现15521用户注册模块15522用户登录16523在线用户显示设计17524聊天信息发送与接收1853数据库设计196结论20内江师范学院本科毕业论文(设计)2致谢22参考文献23附录24内江师范学院本科毕业论文(设计)3基于JAVA即时聊天系统的设计与实现摘要计算机网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时聊天工具在实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。本课题研究的是支持内部网络交流的系统网络即时通讯系统。该系统使用JAVA语言进行编程。系统采用C/S结构模式,支持局域网和INTERNET。该系统采用软件工程的瀑布模型进行开发,分别讨论了系统的需求分析、概要设计、详细设计和编码、以及整个系统的运行和测试。关键词即时聊天;系统;JAVA;C/SABSTRACTTHERAPIDDEVELOPMENTOFCOMPUTERNETWORKTECHNOLOGYTODAY,MOREIMMEDIATEMEANSOFCOMMUNICATIONBYPEOPLEOFALLAGESREALTIMECHATTOOLINACHIEVINGTHETRANSMISSIONOFVIDEOANDAUDIOINFORMATION,SOTHATMEMBERSCANCOLLABORATEREMOTELYINTUITIVE,REALAUDIOANDVISUALCOMMUNICATIONATTHESAMETIME,USEOFMULTIMEDIATECHNOLOGY,ITCANALSOHELPUSERSTOWORKINALLKINDSOFINFORMATIONPROCESSINGSTUDYOFTHISISSUEISTOSUPPORTTHEEXCHANGEOFINTERNALNETWORKSYSTEMSNETWORKINSTANTMESSAGINGSYSTEMTHESYSTEMUSESJAVAPROGRAMMINGLANGUAGESYSTEMUSESTHEC/SSTRUCTUREMODE,SUPPORTFORLANANDINTERNETTHESYSTEMUSESTHEWATERFALLMODELOFSOFTWAREDEVELOPMENTPROJECTSWEREDISCUSSEDSYSTEMREQUIREMENTSANALYSIS,OUTLINEDESIGN,DETAILEDDESIGNANDCODING,ANDRUNANDTESTTHEWHOLESYSTEMFINALLY,THEPAPERCONCLUDEDOFCOURSE,THESYSTEMTHEREARESOMEIMPERFECTIONS,ANDSEEKTOSTUDYANDWORKINTHEFUTUREBEAMENDEDSOTHATTHESYSTEMACTUALLYUSEDINAVARIETYOFNETWORKEFFICIENCYKEYWORDSINSTANTMESSAGERSYSTEMJAVAC/S内江师范学院本科毕业论文(设计)41前言交流对于人类社会及其每个成员都至关重要。直接交流的方式包括语言、文字等,而远程交流还需借助于一些先进的工具如电话、网络等。本课题研究的是支持内部网络交流的系统网络即时通讯系统。该课题在实施的过程中需要使用JAVA语言。11课题选题背景计算机技术、网络技术高速发展的今天,即时通讯方式日益受到人们的青睐。即时通讯工具在实现传输视频与音频信息,使协作成员可以远距离进行直观、真实的视音交流的同时,利用多媒体的技术,它还可以帮助使用者对工作中各种信息进行处理。大家都知道,网络上常用的即时通讯工具之一有ICQ。其实,ICQ是英文“ISEEKYOU”的简称,中文意思是“我找你”。ICQ最大的功能便是即时信息交流,只要记得对方的号码,上网时可以呼他,无论他在哪里,只要他上网打开ICQ,人们就可以随时交流。目前即时聊天系统种类众多,功能也较为齐全。该课题现在所研究的即时通讯系统,其目标是定位于企业内部网络,解决企业或单位的沟通及协同的问题,提高工作效率。企业内部员工可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息群发、传送文件、音频视频对话等。系统包括客户端程序和服务器端程序,支持局域网和INTERNET。企业内部员工之间可以在内部网覆盖的任何地点、任何时间进行即时交流,真正实现企业内部协同工作。使您不必花费大量的时间、金钱聚集到一个地方,通过网络,就能实现面对面的沟通,提高了效率。MSN、QQ等公共消息系统,由于聊天对象及内容的不可控,若在企业内部使用,可能会降低工作效率。而该即时通讯系统将自己的服务器端安装在企业内,并且人员的创建是由系统管理员来完成,因此很好的解决了这个问题。即时通讯带给了更大的互动性,人们在交流彼此的看法、意见时,发现采用你来我往的方式达到的效果最为明显。这就体现了互动性。通过使用及时通讯系统,大家不需要离开电脑,不需要借助其它额外的工具,就可以在线实时地交流工作。12即时通信的概念和特点即时通讯IM是一个允许两人或多人使用网络即时地传递文字信息、档案、语音与视频交流的终端服务。即时通讯不同于EMAIL在于它的交谈是即时的。【1】大部分的即时通讯服务提供了PRESENCEAWARENESS的特性显示联络人名单,联络人是否在在线与能否与联络人交谈。在早期的即时通讯程序中,使用者输入的每一个字符都会即时显示在双方的银幕,且每一个字符的删除与修改都会即时的反应在银幕上。这种模式比起使用EMAIL更像是电话交谈,充分体现了其实时特性。在现在的即时通讯程序内江师范学院本科毕业论文(设计)5中,为了画面的完整美观和交流方便,交谈中的另一方通常只会在本地端按下送出键ENTER或是CTRLENTER后才会看到信息。13即时聊天系统的发展二十世纪七十年代早期,一种较早的即时通讯形式是柏拉图系统PLATOSYSTEM。八十年代,UNIX/LINUX的交谈即时信息被广泛的使用于工程师与学术界,九十年代即时通讯更可跨越了操作系统平台交流,1996年11月,首个广泛被非UNIX/LINUX使用者用于因特网的即时通讯软件ICQ出现。通常认为ICQ是现在流行使用的即时通讯软件的开山之作。ICQ源于以色列特拉维夫的MIRABILS公司。该公司成立于1996年月,也就是在这个时候,四个月后的1996年11月,互联网上最出名,下载使用人数最多的免费软件ICQ诞生了,她是由几个以色列的年轻人制作的,在无人投资的情况下,他们向全球互联网用户提供免费下载使用,到了1998年,MIRABILIS公司的ICQ用户已经发展到1200万人,并以每月100万用户的速度增加。这时候,ICQ公司由于其潜在的巨大商业广告价值,已经成为许多大公司争相购买的对象,1998年ICQ公司将自己开发的软件连同用户一起“卖”给了美国在线(AOL),售价287亿美元。据美国在线1999年底称,ICQ使用者已达5000万,其中超过三分之二的使用者居住在美国本土以外的世界各地。ICQ造就的实时通信成了互联网世界中发展最快的一个领域。2涉及的相关技术及协议为了保证课题能正常实施,先来分析一下课题所需要的相关技术和协议。21JAVA语言经过认真的讨论分析,综合各种计算机高级语言的特征和适应范围,最终决定选择纯面向对象的JAVA语言来完成毕业论文的设计,下面就技术可行性方面,对JAVA语言作一简要介绍。SUN公司的口号就是“网络就是计算机”,JAVA能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用JAVA语言,可以相对轻松的一天编写一个有条理的网络程序。今天,JAVA的网络功能正在飞跃发展,不断有新的特性增加到这个有价值的基础上,JAVASOFT实验室正在不断努力使JAVA更加完善。就JAVA语言的主要特点,本人归纳如下JAVA程序设计的开发过程与运行环境JAVA是解释型的高级编程语言,所以JAVA程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。这里要提到,JAVA应用程序的开发周期包括编译、下载、解释和执行几个部分。JAVA编译程序将JAVA源程序翻译为JVM可执行代码字节码。这一编译过程同C/C的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。内江师范学院本科毕业论文(设计)6因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。JAVA编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了JAVA的可移植性和安全性。【2】22C/S模式介绍20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。【3】相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力。客户机和服务器之间通过相应的网络协议来进行通讯。客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户机和服务器两端是易于扩充的。C/S模式是目前占主流的网络计算模式。该模式在操作过程中采取的是主动请示方式首先服务器方要先启动,并根据请示提供相应服务(过程如下)1打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。2等待某个客户请求到达该端口。3接收到重复服务请求,处理该请求并发送应答信号。4返回第二步,等待另一客户请求。5关闭该服务器。客户端1打开一个通信通道,并连接到服务器所在主机的特定端口。2向服务器发送服务请求报文,等待并接收应答;继续提出请求。内江师范学院本科毕业论文(设计)73请求结束后关闭通信通道并终止。分布运算和分布管理是客户机/服务器模式的特点。最后选择了C/S模式。23HIBERNATE框架简介HIBERNATE是一种JAVA语言下的对象关系映射解决方案。它是一种自由、开源的软件。它用来把对象模型表示的对象映射到基于SQL的关系模型结构中去,为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。主要作用有HIBERNATE不仅管理JAVA类到数据库表的映射(包括从JAVA数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时间。【4】它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。无论是从设计草案还是从一个遗留数据库开始,开发人员都可以采用HIBERNATE。在应用方面,HIBERNATE对JDBC进行了非常轻量级的对象封装,使得JAVA程序员可以随心所欲的使用对象编程思维来操纵数据库。HIBERNATE可以应用在任何使用JDBC的场合,它既可以在JAVA的客户端程序使用,也可以在SERVLET/JSP的WEB应用中使用。最具革命意义的是,HIBERNATE可以在应用EJB(ENTERPRISEJAVABEANS是JAVA应用于企业计算的框架)的J2EE架构中取代CMP,完成数据持久化的重任。3系统需求分析前面两章介绍了课题的选题背景和相关的技术基础和协议。在本章中将讨论一下即时通讯系统的需求分析。31即时聊天消息的一般需求311一般即时消息格式需求1所有实体必须至少使用一种消息格式;2一般即时消息格式必须定义发信者和即时收件箱的标识;3一般即时消息格式必须包含一个让接收者可以回消息的地址;4一般即时信息格式必须允许对信息有效负载的编码和鉴别(非ASCII内容);5必须提供扩展和注册即时消息格式的模式的机制。312可靠性需求协议必须存在机制,保证即时消息成功投递或者投递失败的时候,发信者获得足够的信息。313性能需求1即时消息的传输必须足够的迅速;2即时消息的内容必须足够丰富;内江师范学院本科毕业论文(设计)83即时消息的长度尽量足够的长。32即时消息的协议需求协议是一系列的步骤,它包括双方或者多方,设计它的目的是要完成一项任务。即时通讯协议,参与的双方或者多方是即时通讯的实体。协议必须是双方或者多方参与的,一方单独完成的就不算协议。这样在协议动作的过程中,双方必须交换信息,包括控制信息、状态信息等等。这些信息的格式必须是协议参与方同意并且遵循的。好的协议要求清楚、完整,每一步都必须有明确的定义,并且不会引起误解;对每种可能的情况必须规定具体的动作。33即时消息的安全需求A发送即时消息M给B,有以下几种情况和相关需求1如果无法发送,A必须接到确认;2如果M被投递了,B只能接受M一次;3协议必须为B提供方法检查A发送了这条信息;4协议必须允许B使用另一条即时信息,回复信息;5协议必须为A提供方法保证没有其他个体C可以篡改M;34即时信息加密和鉴别1协议必须提供方法保证通知和即时消息的置信度,未被监听或者破坏;2协议必须提供方法保证通知和即时消息的置信度,未被重排序或者回放;3协议必须提供方法保证通知和即时消息被正确的实体阅读;4协议必须允许客户自己使用方法确保信息的不被截获,不被重放和解密。35即时通讯系统需求351注册需求1即时通讯系统拥有多个账户,允许多个用户注册;2一个用户可以注册多个ID;3注册所使用的帐号类型为字母ID。352通讯需求1用户可以传输文本消息;2用户可以传输RTF格式消息;3用户可以加密/解密消息等。4系统设计在这里我们将该即时通讯系统命名为CHAT,现在对该系统进行总体设计。采用客户机/服务器(C/S)的模式来设计,是一个2层的C/S结构应用程序服务器应内江师范学院本科毕业论文(设计)9用程序客户端,其分层机构如图1所示。图12层C/S结构示意图客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接口。若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。服务层又叫做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。41即时聊天系统的实施原理411工作方式和技术原理典型的IM工作方式如下登陆CHAT通讯服务器,获取一个自建立的历史的交流对象列表(同事列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,从技术上来说,聊天系统的基本技术原理如下第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(ONLINEPRESENCE)。第二步,根据用户A存储在IM服务器上的好友列表(BUDDYLIST),服务器将用内江师范学院本科毕业论文(设计)10户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(PORT)号等,IM好友的客户端收到此信息后将在予以提示。第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(PORT)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。412通讯方式1在线直接通讯如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通讯方式(PEERTOPEER)。【5】2在线代理通讯用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。42软件设计流程因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤先进行需求分析,再是系统设计,然后是详细设计与编码,其次是软件的测试,最后是软件的运行和维护。【6】在实际过程中这些步骤经常是重叠和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图2所示。需求分析系统设计详细设计与编码软件测试软件运行与维护图2即时通讯系统开发流程图内江师范学院本科毕业论文(设计)1143功能模块划分该即时聊天工具按如下过程完成通信1客户向服务器注册,告知服务器该客户监听某主题;2客户注册之后,向服务器发送消息;3服务器再把消息发送给所有监听此主题的客户。根据以上描述,该系统功能模块图请见图3。即时聊天系服务器端客户端建立连接存储数据监听用户新建用户登录通讯交流图3通讯系统的功能模块431服务器端由图3可知服务器端完成至少3大功能建立连接、存储数据和监听客户。这3大功能的具体含义如下1建立一个SERVERSOCKET连接,不断侦听是否有客户端连接或者断开连接。2服务器端是一个信息发送中心,所有客户端的信息都传到服务器端,再由服务器根据要求分发出去。3数据库数据操作包括将用户信息存储到数据库等。432客户端客户端要完成4大功能新建立用户、用户登录、通信交流。这些功能的含义如下1新建立用户客户端与服务器端建立通信信道,向服务器端发送新建用户的信息,接收来自服务器的信息进行注册。2用户登录客户端与服务器端建立通信信道,向服务器端发送信息,完成用户登录。3通信交流客户端可完成的信息的编辑、发送和接收等功能。44数据库概要设计因为本系统采用的是2级C/S结构模式,所以,为了减少服务器的存储量,方便程序内江师范学院本科毕业论文(设计)12设计,本系统只对用户信息进行存储。利用JAVA中的HIBERNATE框架技术进行存储。在HIBERNATE中,各表的映射文件HBMXML可以通过工具生成,在本系统中,用户表信息可以用XML代码实现。用户表USER表1用户信息表名称字段名称类别主键非空用户编号ID数字是是登录名CUSTNAME文本否是登录密码CUSTPASSWORD文本否是年龄AGE文本否是性别SEX文本否是电子邮箱EMAIL文本否是5详细设计51服务器端的设计与实现作为C/S模式下的系统开发,很显然服务器端程序的设计是非常重要的。下面就服务器端的相关程序模块进行设计,并一定程度上实现了相关功能。512主服务器类的设计设计服务器时需要考虑如下几个因素1服务器的运行速度;2服务器的响应速度,包括新建连接和发送数据的响应速度;3I/O吞吐量;4其他流量控制(QOS)、安全性。针对TCP/IP协议的数据结构,设计服务器的程序结构需要考虑以下的因素1多线程;2多进程;3单线程。主服务器类实现了服务器端的多线程,使用SEVERSOCKETSNEWSERVERSOCKET1001语句在1001端口创建套接口;使用NEWSERVERTHREADSOCKET语句创建新的线程。主服务器类调用SERVERTHREAD类,而每个SERVERTHREAD实体就是一个独立的线程,刚好对应于客户端的连接请求响应线程。服务器端有一个(或多个)进程在指定的端口等待客户的连接信息,一旦连接成功,就可以按设计的数据交换方法和格式进行数据传输。内江师范学院本科毕业论文(设计)13客户端只在需要的时候向服务器端发出连接请求。实现界面如图4。图4服务器启动界面现就其中一些核心代码进行讲解。PUBLICCLASSAPPSERVEREXTENDSTHREAD其中PUBLIC是JAVA的关键字,用来表示该类是共有,在整个程序里都可以访问到它;CLASS表示类定义,它后面接着用户定义的类的类名为APPSERVER;EXTENDS表示继承的意思,他后面的类THREAD是子类,能够继承父类APPSERVER所定义的一些变量。这条语言表示的意思就是声明一个公共类APPSERVER,用子类THREAD继承父类APPSERVER中的一些变量。STATICBOOLEANNEWMESSAGE。其中,STATIC是关键字,表示静态变量,BOOLEAN表示变量类型为布尔型,变量名为NEWMESSAGE。这条语句的意思是定义一个静态变量NEWMESSAGE,它的类型为布尔型。值得强调的是布尔型数据只有两个值TRUE和FALSE,并且它们不对应人数整数值。IFSTARTSFRAMETXTSTATUSSETTEXT“已启动“LOGNULL,“服务器已启动“ELSESFRAMETXTSTATUSSETTEXT“关闭中“这是一条IF条件判断语句,它表示变量START如果不为空,那么执行语句第一个大括号中的语句,如果为空,则执行ELSE中的语句。其中,LOG为输出语句,表示在窗口内江师范学院本科毕业论文(设计)14中输出“服务器已启动”信息。PUBLICVOIDRUNTRYWHILESTARTSOCKETCLIENTSERVERSOCKETACCEPTCONNECTIONCONNEWCONNECTIONCLIENT,U,V,USERINFOCATCHIOEXCEPTIONELOGE,“不能监听“这个函数的作用是监听用户信息,VOID表示定义的函数不需要返回值,WHILE是循环语句关键字,在语句中的意思为直到START的值不为空,将循环执行后面括号的语句,直到START值为空后,循环才结束。CONNECTIONCON表示连接用户信息。CATCH是对JAVA中的异常进行捕获,并且能够抛出异常,便于程序能够正常运行。512登录验证模块系统的登录模块是比较重要的,这是用户的一个身份验证,是通讯系统必须的一个功能模块。如果客户端输入的字符串表方式需要登录,那么服务器在接收到该信息后连接数据库,准备从数据库选择昵称和密码。服务器接收到客户端发送过来的号码和密码信息后,设定数据库查寻条件,并执行数据库查寻,通过比较输入的用户名和密码数据库信息来却请用户的登录是否成功。以下为登陆验证的流程图。符合不符合登陆系统输入信息验证进入系统图5用户登录流程图513注册处理模块新建用户是即时通讯工具的一个基本功能。用户新建过程也在线程监听函数RUN内江师范学院本科毕业论文(设计)15中。新建用户的过程是这样的首先使用REGISTER_CUSTOMER方法加载数据库驱动类;然后使用DAOGETUSER方法获取数据;在获取注册名时,进行判断,查看用户名是否重复,如果重复,则向客户端弹出提示信息,见图6;如果不重复,服务器接收客户端用户发送的昵称、密码、用户EMAIL等信息,执行数据库添加操作完成用户的创建;最后向用户反馈注册成功信息。图6注册名重复提示信息52客户端的设计与实现前一章介绍了服务器端的设计与实现,对于C/S模式的系统而言,还必须对系统的客户端进行设计和实现。下面就来解决这样一个问题。客户端通过SOCKET与服务器建立连接。服务器与客户都通过构造BUFFEREDREADER、PRINTWRITER来建立输入流和输出流,双方通过该输入流和输出流来相互传递信息。只要收到客户端的连接请求,服务器利用ACCEPT函数返回一个新建的SOCKET对象,随后客户端向服务器发送消息,诸如注册、登录和查找同事等请求,服务器收到请求后,针对不同的消息处理请求。521用户注册模块当用户向服务器端发出注册请求后,客户端将向服务器发送客户传递的信息,诸如客户的昵称、性别、个人资料等信息。等服务器接收完毕后,服务器会通过HIBERNATE框架读取数据库信息,并进行判断,最后在客户端收到服务器的反馈信息。现对部分关键语句进行讲解。PUBLICCLASSREGISTEREXTENDSJFRAMEIMPLEMENTSACTIONLISTENERTOOLKITTOOLKITTOOLKITGETDEFAULTTOOLKITJBUTTONBTNOK,BTNCANCEL,BTNCLEARPUBLICREGISTERSTRINGIPBTNOKNEWJBUTTON“确定O“BTNOKSETMNEMONICOBTNOKSETTOOLTIPTEXT“保存注册信息“内江师范学院本科毕业论文(设计)16BTNOKSETBOUNDS250,135,80,25IMPLEMENT继承于接口类时用的关键词【7】,在数据接口位置使用,在这里表示类ACTIONLISTEN类继承类REGISTER。JBUTTONBTNOK,BTNCANCEL,BTNCLEAR。这条语句中,JBUTTON其实是一个类,名为JBUTTON按钮类,它是JAVA中自带的一种控件,当鼠标移入、移出、被点击所定义的3个变量时,会触发JBUTTON类,从而执行相应的操作。如在类REGISTER中,当鼠标点击“确定”按钮时,则会触发类JBUTTON定义的变量BTNOK,并且为其赋值,进而调用SETTOOLTIPTEXT方法,将注册信息进行保存。而SETBOUNDS类是JAVA自带类,他能够设置组件位置【8】,即确定注册窗口位置。见图7。图7用户注册界面522用户登录当用户点击登录时,客户端发起请求与服务端建立连接,登录信息首先在客户端做验证,然后通过填写的服务器IP地址申请与服务端建立连接。而在服务器端,有一个主线程专门创建SOCKET服务,等待客户端的连接,每当客户端发起连接的申请时,与之建立连接,并创建一个线程,将建立的连接交给这个线程处理,并将连接存入一个集合中,用于后续业务的处理。然后服务器将反序列化客户端传输过来的数据,生成一个用户对象。从中获取登录填写的信息,根据用户名和密码在数据库中查找数据,如果能够找到表示登录成功,反之,登录不成功。最后将登录的结果通过文本发送给客户端发送给服务端。最后,如果通过验证,得到一个标志,进入聊天主窗体,否则弹出登录失败的对话框,让用户重新登录。登陆界面见图8内江师范学院本科毕业论文(设计)17图8用户登陆界面现对部分关键代码进行讲解PUBLICVOIDACTIONPERFORMEDACTIONEVENTAEOBJECTSOURCEAEGETSOURCEIFSOURCEEQUALSBTNLOGINIFTXTUSERNAMEGETTEXTEQUALS“|PWDPASSWORDGETTEXTEQUALS“JOPTIONPANEOP1NEWJOPTIONPANEOP1SHOWMESSAGEDIALOGNULL,“用户名或密码不能为空“ELSESTRSERVERIPTXTSERVERGETTEXTLOGIN该语句表示的意思为接受用户登陆信息,如果用户名或者密码为空,则弹出提示信息,如果不为空,则调用LOGIN方法。这里EQUALS表示接受变量的值;“|”表示“或”的意思,;SHOWMESSAGEDIALOG是JAVA的自带控件,作用是在当前界面弹出对话框;关键字NEW,是一种调用方法,表示能够直接调用类的构造方法。523在线用户显示设计用户完成登录后,客户端与服务器端建立连接。连接建立成功后,客户向服务器请求读取在线人员名单;服务器收到该请求,开始读取数据库中的USER表并得到同事的号码,向客户端发送这些信息;客户收到服务器信息后,在主窗口显示显现成员的昵称。其实现代码如下内江师范学院本科毕业论文(设计)18FORINTI0I其中,PACKAGE“ORGSELERBEAN“表示调用该框架BEAN中的数据包;AUTOIMPORT“TRUE“表示HIBERNATE框架中的将映射文件实体;PROPERTY表示元素定义,NAME表示字段名;NOTNULL表示是否设置该字段为空;UNIQUE表示是否设置该字段为唯一值;OPTIMISTICLOCK指定此属性做更新操作时是否需要乐观锁定LAZY指定是否采用延迟加载及加载策略,设置为FALSE,表示此关联对象不采用延迟加载。6结论众所周知,互联网从诞生以来,就开始影响着地球的每一个角落,给予了人类一种全新的生活方式,随着互联网技术的不断发展,新兴的技术也层出不穷,即时通信系统就是这么一种以聊天形式为主的广受欢迎的互联网技术。当然,该课题讨论的即时通讯系统是定位于内部局域网,供班级内部人员使用的通讯系统。即时通信中最基本的功能就是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,它的优点是方便快捷,为人们之间创建了一种新型的、廉价的、快速的、简便的沟通方式。首先,本系统完全按照软件工程的瀑布模型进行开发,虽然缺少部分开发文档,但本论文则是按照需求分析,概要设计,详细设计,软件的运行和测试等的结构进行安排的。其次,本即时聊天系统采用了C/S模型。服务器在C/S模型中处于一个中心地位。内江师范学院本科毕业论文(设计)21服务器一般同时为多个客户提供服务,这就造成了服务器设计的复杂性。即时通讯服务器是数据中心,它是客户活动的中介,需要同时应对众多客户的请求。再次,本文并没有采用复杂的SQL,ORICLE等数据库,而是通过HIBERNATE框架对数据进行映射,然后利用HBMXML将数据进行存储。最后,在编写这个聊天程序时遇到许许多多的问题,比如JAVA的图形化界面如何编写,该怎样布局。这是JAVA的一个弱项,不像VB,DELPHI等语言可以使用已有的控件。后来也在网上找到一些SETBOUNDS类,虽然调用起来比较麻烦,但是熟悉后也觉得不是那么难。经过一段时间的学习和工作,该即时聊天系统已经初具雏形,实现了网络即时通信工具的主要功能,为实现一个崭新的可跨平台的JAVA即时聊天工具打下了基础。目前该即时聊天系统的10版本已经投入试运行中。内江师范学院本科毕业论文(设计)22致谢为期一个学期的毕业论文(设计)已接近尾声了,我的四年大学生涯也即将圈上一个句号。此刻我的心中却有些怅然若失,因为那些熟悉的计科学院的恩师们和各位可爱的同学们,我们也即将挥手告别了。值此论文完成之际,心中充满了一片感激之情,在整个论文完成的过程中得到了我的导师于永武于老师的精心指导,在此要向他致以最崇敬的感谢。于老师总是在百忙之中抽出时间来为我们解答论文设计过程中的疑惑。他循循善诱的教导和不拘一格的思路给予我无尽的启迪。再次向于老师献上诚挚的谢意。感谢我的舍友廖鸿,方敏同学,在论文完成的过程中是他们在生活上和学习上给予我很大的帮助和支持,在我进行毕业设计的过程中是他们不断给我自信,如今才能顺利完稿。感谢06级2班的全体成员,在这个大家庭中使我学会了宽容,忍让,团结与互助。大家在学习上互相交流,生活上相互帮助,再次衷心的向大家说一声谢谢。最后我要诚挚地感谢我的家人,是他们无微不至的关怀、一贯的体谅与支持,使我能在工作和学习上不断前进,他们是我努力工作和积极生活的精神支柱。向所有关心我的亲人、同学和朋友们表示深深的谢意内江师范学院本科毕业论文(设计)23参考文献1尹治本计算机网络及应用教程M成都西南交通大学出版社200282熊晓敏,刘瑛,陈惠清基于JAVA的网络即时通讯系统的设计与实现J计算机与现代化,20051289923罗军舟,黎波涛,杨明,吴俊,黄健TCP/IP协议及网络编程技术北京清华大学出版社200584BRUCEECKEL著,侯捷翻译JAVA编程思想M北京机械工业出版社出版,200095京丽等数据通信原理M北京北京邮电大学出版

温馨提示

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

评论

0/150

提交评论