已阅读5页,还剩112页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1毕业设计设计题目学生姓名学院名称专业名称班级名称学号指导教师教师职称学历2目录1前言511课题选题背景512需求分析513系统设计的要点62涉及的相关技术及协议621JAVA语言622C/S模式介绍73系统需求分析831可行性分析832系统功能需求833系统性能需求834即时信息加密和鉴别935即时通讯系统需求94系统设计941即时聊天系统的实施原理1042软件设计流程1143功能模块划分1144数据库概要设计125详细设计1351服务器端的设计与实现13512主服务器类的设计13512登录验证模块15513注册处理模块1552客户端的设计与实现16521用户注册模块16522用户登录17523在线用户显示设计18524聊天信息发送与接收1953数据库设计206结论21致谢233参考文献24附录254基于JAVA即时聊天系统的设计与实现摘要网络络聊天工具已经作为一种重要的信息交流工具,受到越来越多的网民的青睐。目前,出现了很多非常不错的聊天工具,其中应用比较广泛的有NETMEETING、腾讯QQ、MSNMESSAGER等等。该系统开发主要包括一个网络聊天服务器程序和一个网络聊天客户程序两个方面。前者通过SOCKET套接字建立服务器,服务器能读取、转发客户端发来信息,并能刷新用户列表。后者通过与服务器建立连接,来进行客户端与客户端的信息交流。其中用到了局域网通信机制的原理,通过直接继承THREAD类来建立多线程。开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(CLIENT/SERVER模式)、网络编程的设计方法等。在网络编程中对信息的读取、发送,是利用流来实现信息的交换,其中介绍了对实现一个系统的信息流的分析,包含了一些基本的软件工程的方法。经过分析这些情况,该聊天工具采用ECLIPSE为基本开发环境和JAVA语言进行编写,首先可在短时间内建立系统应用原型,然后,对初始原型系统进行不断修正和改进,直到形成可行系统关键词即时通讯系统B/SC/SMYSQLSOCKETSWINGABSTRACTTHERAPIDDEVELOPMENTOFCOMPUTERNETWORKTECHNOLOGYTODAY,MOREIMMEDIATEMEANSOFCOMMUNICATIONBYPEOPLEOFALLAGESREALTIMECHATTOOLINACHIEVINGTHETRANSMISSIONOFVIDEOANDAUDIOINFORMATION,SOTHATMEMBERSCANCOLLABORATEREMOTELYINTUITIVE,REALAUDIOANDVISUALCOMMUNICATIONATTHESAMETIME,USEOFMULTIMEDIATECHNOLOGY,ITCANALSOHELPUSERSTOWORKINALLKINDSOFINFORMATIONPROCESSINGSTUDYOFTHISISSUEISTOSUPPORTTHEEXCHANGEOFINTERNALNETWORKSYSTEMSNETWORKINSTANTMESSAGINGSYSTEMTHESYSTEMUSESJAVAPROGRAMMINGLANGUAGESYSTEMUSESTHEC/SSTRUCTUREMODE,SUPPORTFORLANANDINTERNETTHESYSTEMUSESTHEWATERFALLMODELOFSOFTWAREDEVELOPMENTPROJECTSWEREDISCUSSEDSYSTEMREQUIREMENTSANALYSIS,OUTLINEDESIGN,DETAILEDDESIGNANDCODING,ANDRUNANDTESTTHEWHOLESYSTEMFINALLY,THEPAPERCONCLUDEDKEYWORDSINSTANTMESSAGERSYSTEMB/SC/SMYSQLSOCKETSWING51前言目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LIVEMESSENGER)以及跨平台GAIM等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。11课题选题背景随着计算机网络技术的发展,网络聊天工具已经成为人们日常交流的一种重要工具。它通信速度快,成本低,更重要的是方便人们信息的交流和资料的传递,所以开发一个易于操作并拥有友好界面的聊天工具可以较好地解决现实生活中通信费用高昂以及电话的单线程通信等问题1。QQ聊天系统是一款基于互联网的即时通信系统,它允许人们利用英特网技术实时地传送信息,并且能让用户选择性地接受或拒绝其他用户的信息。由于QQ有着出色的通信性能并且其用户普及度较高,因此本课题在模仿QQ的前提下,设计了一款具有聊天功能及其他附加功能的软件目前即时聊天系统种类众多,功能也较为齐全。该课题现在所研究的即时通讯系统,其目标是定位于企业内部网络,解决企业或单位的沟通及协同的问题,提高工作效率。企业内部员工可以利用该通讯系统随时随地发送文字消息、进行多人群聊、消息群发、传送文件、音频视频对话等。系统包括客户端程序和服务器端程序,支持局域网和INTERNET。企业内部员工之间可以在内部网覆盖的任何地点、任何时间进行即时交流,真正实现企业内部协同工作。使您不必花费大量的时间、金钱聚集到一个地方,通过网络,就能实现面对面的沟通,提高了效率。MSN、QQ等公共消息系统,由于聊天对象及内容的不可控,若在企业内部使用,可能会降低工作效率。而该即时通讯系统将自己的服务器端安装在企业内,并且人员的创建是由系统管理员来完成,因此很好的解决了这个问题。随着计算机网络技术的发展,网络聊天工具已经成为人们日常交流的一种重要工具。它通信速度快,成本低,更重要的是方便人们信息的交流和资料的传递,所以开发一个易于操作并拥有友好界面的聊天工具可以较好地解决现实生活中通信费用高昂以及电话的单线程通信等问题1。QQ聊天系统是一款基于互联网的即时通信系统,它允许人们利用英特网技术实时地传送信息,并且能让用户选择性地接受或拒绝其他用户的信息。由于QQ有着出色的通信性能并且其用户普及度较高,因此本课题在模仿QQ的前提下,设计了一款具有聊天功能及其他附加功能的软件12需求分析聊天系统最重要的是服务器端和客户端两个方面。服务器端有两个主要任务61服务器端应当建立一个SERVERSOCKET,并且不断进行监听,判断是否有客户端连接请求或断开连接。2服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息给客户端。客户端要完成的工作1与服务器端建立通信通道,向服务器端发送信息。2接收来自服务器的应答信息。解决了上述的4个问题,也就完成了聊天系统的核心任务。13系统设计要点聊天系统的设计主要是提供满足用户双方直接进行实时聊天的服务,在设计聊天系统的过程中,必须要考虑好以下几个设计要点1实现思想在INTERNET上的聊天程序一般都是以服务器提供服务端连接响应,用户通过客户端程序登录到特定服务器,即可与登录在同一服务器上的用户进行交流,这是一个面向连接的通信过程。因此,要在TCP/IP环境下45,实现服务器端和客户端两部分程序。2服务器端工作流程服务器端通过SOCKET系统创建一个SERVERSOCKET来对客户端进行接收,并与指定的本地端口绑定BIND,就可以在端口进行监听LISTEN。MAP用以存储用户姓名和对应的SOCKET。通过CHATROOMSERVERTHREAD线程类来处理不同请求。如果有客户端连接请求,则给出一个相应的SOCKET,将客户端地址赋给这个SOCKET。登录成功的用户就可以在服务器上聊天。3客户端工作流程客户端程序相对简单,只需要建立一个SOCKET与服务器端连接,成功后通过这个SOCKET来发送和接收数据即可。2涉及的相关技术及协议为了保证课题能正常实施,先来分析一下课题所需要的相关技术和协议。21JAVA语言经过认真的讨论分析,综合各种计算机高级语言的特征和适应范围,最终决定选7择纯面向对象的JAVA语言来完成毕业论文的设计,下面就技术可行性方面,对JAVA语言作一简要介绍。SUN公司的口号就是“网络就是计算机”,JAVA能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用JAVA语言,可以相对轻松的一天编写一个有条理的网络程序。今天,JAVA的网络功能正在飞跃发展,不断有新的特性增加到这个有价值的基础上,JAVASOFT实验室正在不断努力使JAVA更加完善。就JAVA语言的主要特点,本人归纳如下JAVA程序设计的开发过程与运行环境JAVA是解释型的高级编程语言,所以JAVA程序的开发通常需要经过编写源程序、编译生成字节码和运行三个过程。这里要提到,JAVA应用程序的开发周期包括编译、下载、解释和执行几个部分。JAVA编译程序将JAVA源程序翻译为JVM可执行代码字节码。这一编译过程同C/C的编译有些不同。当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而产生的。因此,在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。JAVA编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将这些符号引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址。这样就有效的保证了JAVA的可移植性和安全性。【2】22C/S模式介绍20世纪90年代出现并迅速占据主导地位的一种计算模式为客户机/服务器模式,简称为C/S模式,它实际上就是把主机终端模式中原来全部集中在主机部分的任务一分为二,保留在主机上的部分负责集中处理和汇总运算,成为服务器;而下放到终端的部分负责为用户提供友好的交互界面,称为客户机。【3】相对于以前的模式,C/S模式最大的改进是不再把所有软件都装进一台计算机,而是把应用系统分成两个不同的角色和两个不同的地位一般在运算能力较强的计算机上安装服务器端程序,而在一般的PC上安装客户机程序。正是由于个人PC机的出现使客户机/服务器模式成为可能,因为PC机具有一定的运算能力,用它代替了上面第一种模式的哑终端后,就可以把主机端的一部分工作放在客户机端完成,从而减轻了主机的负担,也增加了系统对用户的响应速度和响应能力。客户机和服务器之间通过相应的网络协议来进行通讯。客户机向服务器发出数据请求,服务器将数据传送给客户机进行计算,计算完毕,计算结果可返回给服务器。这种模式的优点充分利用了客户机的性能,使计算能力大大提高;另外,由于客户机和服务器之间的通讯是通过网络协议进行的,是一种逻辑的联系,因此物理上在客户8机和服务器两端是易于扩充的。C/S模式是目前占主流的网络计算模式。该模式在操作过程中采取的是主动请示方式首先服务器方要先启动,并根据请示提供相应服务(过程如下)1打开一个通信通道同时通知本地主机,服务器愿意在某一个公认地址上接收客户请求。2等待某个客户请求到达该端口。3接收到重复服务请求,处理该请求并发送应答信号。4返回第二步,等待另一客户请求。5关闭该服务器。客户端1打开一个通信通道,并连接到服务器所在主机的特定端口。2向服务器发送服务请求报文,等待并接收应答;继续提出请求。3请求结束后关闭通信通道并终止。分布运算和分布管理是客户机/服务器模式的特点。最后选择了C/S模式。3系统需求分析前面两章介绍了课题的选题背景和相关的技术基础和协议。在本章中将讨论一下即时通讯系统的需求分析。31可行性分析经济可行性由于本系统的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行JAVA软件的电脑便可,所以不用考虑到经济问题。技术可行性本系统的开发利用MICROSOFTSQLSERVER2000作为本系统的数据库,它是一个支持多用户的新型数据库,适用于大中规模的数据量需求。学校校园网的建设也为新系统服务器/客户端的结构提供了硬件的支持。使用JAVA作为系统开发的开发环境,它提供完善的指令控制语句、类与对象的支持及丰富的数据类型,给开发高性能系统提供的保障为开发满足客户要求的系统,保证了代码的模块化要求,而代码模块化的提高,非常有利于以后对新系统的扩展与修改。运行可行性本系统为一个小型的局域网聊天系统,所耗费的资源非常的小,现在一般的电脑无论是硬件还是软件都能够满足条件,因此,本系统在运行上是可行的。综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的,因此,它在技术上是可行的。932系统功能需求本系统主要通过客户端,服务器端来体现聊天系统的基本功能。(1)服务器端1处理用户注册2处理用户登录3处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容4处理用户得到信息5处理用户退出6服务器踢人。7保存服务器日志8保存用户聊天信息。2客户端1用户注册界面及结果2用户登录界面及结果3用户发送信息界面及结果4用户得到信息界面及结果5用户退出界面及结果33即时消息的安全需求A发送即时消息M给B,有以下几种情况和相关需求1如果无法发送,A必须接到确认;2如果M被投递了,B只能接受M一次;3协议必须为B提供方法检查A发送了这条信息;4协议必须允许B使用另一条即时信息,回复信息;5协议必须为A提供方法保证没有其他个体C可以篡改M;34即时信息加密和鉴别1协议必须提供方法保证通知和即时消息的置信度,未被监听或者破坏;2协议必须提供方法保证通知和即时消息的置信度,未被重排序或者回放;3协议必须提供方法保证通知和即时消息被正确的实体阅读;4协议必须允许客户自己使用方法确保信息的不被截获,不被重放和解密。1035即时通讯系统需求351注册需求1即时通讯系统拥有多个账户,允许多个用户注册;2一个用户可以注册多个ID;3注册所使用的帐号类型为字母ID。352通讯需求1用户可以传输文本消息;2用户可以传输RTF格式消息;3用户可以加密/解密消息等。4系统设计在这里我们将该即时通讯系统命名为CHAT,现在对该系统进行总体设计。采用客户机/服务器(C/S)的模式来设计,是一个2层的C/S结构应用程序服务器应用程序客户端,其分层机构如图1所示。图12层C/S结构示意图客户层也叫做应用表示层,也就是我们说的客户端,这是应用程序的用户接口部分。给即时通讯工具设计一个客户层具有很多优点,这是因为客户层担负着用户与应用间的对话功能。它用于检查用户的输入数据,显示应用的输出数据。为了使用户能直接地进行操作,客户层需要使用图形用户接口。若通讯用户变更,系统只需要改写显示控制和数据检查程序就可以了,而不会影响其他两层。服务层又叫做功能层,相当于应用的本体,它是将具体的业务处理逻辑编入程序中。例如,用户需要检查数据,系统设法将有关检索要求的信息一次性地传送给功能层;而用户登录后,聊天登录信息是由功能层处理过的检索结果数据,它也是一次性传送给表示层的。在应用设计中,必须避免在表示层和功能层之间进行多次的数据交换,这就需要尽可能进行一次性的业务处理,达到优化整体设计的目的。1141即时聊天系统的实施原理411工作方式和技术原理典型的IM工作方式如下登陆CHAT通讯服务器,获取一个自建立的历史的交流对象列表(同事列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,从技术上来说,聊天系统的基本技术原理如下第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(ONLINEPRESENCE)。第二步,根据用户A存储在IM服务器上的好友列表(BUDDYLIST),服务器将用户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软件设计流程因为该系统其需求是十分明确的,所以该系统的开发流程采用瀑布模型进行设计,分为几大步骤先进行需求分析,再是系统设计,然后是详细设计与编码,其次是软12件的测试,最后是软件的运行和维护。【6】在实际过程中这些步骤经常是重叠和彼此间有信息交换,它不是一个简单线性过程,而是包括开发步骤的多个反复。如图2所示。需求分析系统设计详细设计与编码软件测试软件运行与维护图2即时通讯系统开发流程图43功能模块划分该即时聊天工具按如下过程完成通信1客户向服务器注册,告知服务器该客户监听某主题;2客户注册之后,向服务器发送消息;3服务器再把消息发送给所有监听此主题的客户。根据以上描述,该系统功能模块图请见图3。即时聊天系统服务器端客户端建立连接存储数据监听用户新建用户登录通讯交流图3通讯系统的功能模块431服务器端由图3可知服务器端完成至少3大功能建立连接、存储数据和监听客户。这3大功能的具体含义如下1建立一个SERVERSOCKET连接,不断侦听是否有客户端连接或者断开连接。132服务器端是一个信息发送中心,所有客户端的信息都传到服务器端,再由服务器根据要求分发出去。3数据库数据操作包括将用户信息存储到数据库等。432客户端客户端要完成4大功能新建立用户、用户登录、通信交流。这些功能的含义如下1新建立用户客户端与服务器端建立通信信道,向服务器端发送新建用户的信息,接收来自服务器的信息进行注册。2用户登录客户端与服务器端建立通信信道,向服务器端发送信息,完成用户登录。3通信交流客户端可完成的信息的编辑、发送和接收等功能。44数据库概要设计因为本系统采用的是2级C/S结构模式,所以,为了减少服务器的存储量,方便程序设计,本系统只对用户信息进行存储。利用JAVA中的框架技术进行存储。在中,各表的映射文件可以通过工具生成,在本系统中,用户表信息可以用XML代码实现。用户表USER表1用户信息表名称字段名称类别主键非空用户编号ID数字是是登录名CUSTNAME文本否是登录密码CUSTPASSWORD文本否是年龄AGE文本否是性别SEX文本否是电子邮箱EMAIL文本否是5详细设计51服务器端的设计与实现作为C/S模式下的系统开发,很显然服务器端程序的设计是非常重要的。下面就服务器端的相关程序模块进行设计,并一定程度上实现了相关功能。512主服务器类的设计设计服务器时需要考虑如下几个因素1服务器的运行速度;142服务器的响应速度,包括新建连接和发送数据的响应速度;3I/O吞吐量;4其他流量控制(QOS)、安全性。针对TCP/IP协议的数据结构,设计服务器的程序结构需要考虑以下的因素1多线程;2多进程;3单线程。主服务器类实现了服务器端的多线程,使用SEVERSOCKETSNEWSERVERSOCKET1001语句在1001端口创建套接口;使用NEWSERVERTHREADSOCKET语句创建新的线程。主服务器类调用SERVERTHREAD类,而每个SERVERTHREAD实体就是一个独立的线程,刚好对应于客户端的连接请求响应线程。服务器端有一个(或多个)进程在指定的端口等待客户的连接信息,一旦连接成功,就可以按设计的数据交换方法和格式进行数据传输。客户端只在需要的时候向服务器端发出连接请求。实现界面如图4。图4服务器启动界面现就其中一些核心代码进行讲解。PUBLICCLASSJAVASERVEREXTENDSTHREAD其中PUBLIC是JAVA的关键字,用来表示该类是共有,在整个程序里都可以访问到它;CLASS表示类定义,它后面接着用户定义的类的类名为APPSERVER;EXTENDS表示继承的意思,他后面的类THREAD是子类,能够继承父类APPSERVER所定义的一些15变量。这条语言表示的意思就是声明一个公共类APPSERVER,用子类THREAD继承父类APPSERVER中的一些变量。STATICBOOLEANNEWMESSAGE。其中,STATIC是关键字,表示静态变量,BOOLEAN表示变量类型为布尔型,变量名为NEWMESSAGE。这条语句的意思是定义一个静态变量NEWMESSAGE,它的类型为布尔型。值得强调的是布尔型数据只有两个值TRUE和FALSE,并且它们不对应人数整数值。IFSTARTSFRAMETXTSTATUSSETTEXT“已启动“LOGNULL,“服务器已启动“ELSESFRAMETXTSTATUSSETTEXT“关闭中“这是一条IF条件判断语句,它表示变量START如果不为空,那么执行语句第一个大括号中的语句,如果为空,则执行ELSE中的语句。其中,LOG为输出语句,表示在窗口中输出“服务器已启动”信息。PUBLICVOIDRUNTRYWHILESTARTSOCKETCLIENTSERVERSOCKETACCEPTCONNECTIONCONNEWCONNECTIONCLIENT,U,V,USERINFOCATCHIOEXCEPTIONELOGE,“不能监听“这个函数的作用是监听用户信息,VOID表示定义的函数不需要返回值,WHILE是循环语句关键字,在语句中的意思为直到START的值不为空,将循环执行后面括号的语句,直到START值为空后,循环才结束。CONNECTIONCON表示连接用户信息。CATCH是对JAVA中的异常进行捕获,并且能够抛出异常,便于程序能够正常运行。512登录验证模块系统的登录模块是比较重要的,这是用户的一个身份验证,是通讯系统必须的一个功能模块。如果客户端输入的字符串表方式需要登录,那么服务器在接收到该信息后连接数据库,准备从数据库选择昵称和密码。服务器接收到客户端发送过来的号码16和密码信息后,设定数据库查寻条件,并执行数据库查寻,通过比较输入的用户名和密码数据库信息来却请用户的登录是否成功。以下为登陆验证的流程图。符合不符合登陆系统输入帐号密码验证进入系统图5用户登录流程图513注册处理模块新建用户是即时通讯工具的一个基本功能。用户新建过程也在线程监听函数RUN中。新建用户的过程是这样的首先使用REGISTER_CUSTOMER方法加载数据库驱动类;然后使用DAOGETUSER方法获取数据;在获取注册名时,进行判断,查看用户名是否重复,如果重复,则向客户端弹出提示信息,见图6;如果不重复,服务器接收客户端用户发送的昵称、密码、用户EMAIL等信息,执行数据库添加操作完成用户的创建;最后向用户反馈注册成功信息。图6注册名重复提示信息52客户端的设计与实现前一章介绍了服务器端的设计与实现,对于C/S模式的系统而言,还必须对系统的客户端进行设计和实现。下面就来解决这样一个问题。客户端通过SOCKET与服务器建立连接。服务器与客户都通过构造BUFFEREDREADER、PRINTWRITER来建立输入流和输出流,双方通过该输入流和输出流来相互传递信息。只要收到客户端的连接请求,服务器利用ACCEPT函数返回一个新建的SOCKET对象,随后客户端向服务器发送消息,诸如注册、登录和查找同事等请求,服务器收到请求后,针对不同的消息处理请求。17521用户注册模块当用户向服务器端发出注册请求后,客户端将向服务器发送客户传递的信息,诸如客户的昵称、性别、个人资料等信息。等服务器接收完毕后,服务器会通过HIBERNATE框架读取数据库信息,并进行判断,最后在客户端收到服务器的反馈信息。现对部分关键语句进行讲解。PUBLICCLASSREGISTEREXTENDSJFRAMEIMPLEMENTSACTIONLISTENERTOOLKITTOOLKITTOOLKITGETDEFAULTTOOLKITJBUTTONBTNOK,BTNCANCEL,BTNCLEARPUBLICREGISTERSTRINGIPBTNOKNEWJBUTTON“确定O“BTNOKSETMNEMONICOBTNOKSETTOOLTIPTEXT“保存注册信息“BTNOKSETBOUNDS250,135,80,25IMPLEMENT继承于接口类时用的关键词【7】,在数据接口位置使用,在这里表示类ACTIONLISTEN类继承类REGISTER。JBUTTONBTNOK,BTNCANCEL,BTNCLEAR。这条语句中,JBUTTON其实是一个类,名为JBUTTON按钮类,它是JAVA中自带的一种控件,当鼠标移入、移出、被点击所定义的3个变量时,会触发JBUTTON类,从而执行相应的操作。如在类REGISTER中,当鼠标点击“确定”按钮时,则会触发类JBUTTON定义的变量BTNOK,并且为其赋值,进而调用SETTOOLTIPTEXT方法,将注册信息进行保存。而SETBOUNDS类是JAVA自带类,他能够设置组件位置【8】,即确定注册窗口位置。见图7。18图7用户注册界面522用户登录当用户点击登录时,客户端发起请求与服务端建立连接,登录信息首先在客户端做验证,然后通过填写的服务器IP地址申请与服务端建立连接。而在服务器端,有一个主线程专门创建SOCKET服务,等待客户端的连接,每当客户端发起连接的申请时,与之建立连接,并创建一个线程,将建立的连接交给这个线程处理,并将连接存入一个集合中,用于后续业务的处理。然后服务器将反序列化客户端传输过来的数据,生成一个用户对象。从中获取登录填写的信息,根据用户名和密码在数据库中查找数据,如果能够找到表示登录成功,反之,登录不成功。最后将登录的结果通过文本发送给客户端发送给服务端。最后,如果通过验证,得到一个标志,进入聊天主窗体,否则弹出登录失败的对话框,让用户重新登录。登陆界面见图819图8用户登陆界面现对部分关键代码进行讲解PUBLICVOIDACTIONPERFORMEDACTIONEVENTAEOBJECTSOURCEAEGETSOURCEIFSOURCEEQUALSBTNLOGINIFTXTUSERNAMEGETTEXTEQUALS“|PWDPASSWORDGETTEXTEQUALS“JOPTIONPANEOP1NEWJOPTIONPANEOP1SHOWMESSAGEDIALOGNULL,“用户名或密码不能为空“ELSESTRSERVERIPTXTSERVERGETTEXTLOGIN该语句表示的意思为接受用户登陆信息,如果用户名或者密码为空,则弹出提示信息,如果不为空,则调用LOGIN方法。这里EQUALS表示接受变量的值;“|”表示“或”的意思,;SHOWMESSAGEDIALOG是JAVA的自带控件,作用是在当前界面弹出对话框;关键字NEW,是一种调用方法,表示能够直接调用类的构造方法。523在线用户显示设计用户完成登录后,客户端与服务器端建立连接。连接建立成功后,客户向服务器请求读取在线人员名单;服务器收到该请求,开始读取数据库中的USER表并得到同事的号码,向客户端发送这些信息;客户收到服务器信息后,在主窗口显示显现成员的昵称。其实现代码如下FORINTI0I其中,PACKAGE“ORGSELERBEAN“表示调用该框架BEAN中的数据包;AUTOIMPORT“TRUE“表示HIBERNATE框架中的将映射文件实体;PROPERTY表示元素定义,NAME表示字段名;NOTNULL表示是否设置该字段为空;UNIQUE表示是否设置该字段为唯一值;OPTIMISTICLOCK指定此属性做更新操作时是否需要乐观锁定LAZY指定是否采用延迟加载及加载策略,设置为FALSE,表示此关联对象不采用延迟加载。6结论本项目是一个JAVA及时通讯系统,在做系统的三个月之内,遇到了很多的问题,但是也从问题之中学习到了很多东西。比如乱码问题,比如SOCKET问题,许许多多,但是从中多亏了导师的帮助,我才能顺利的解决,所以我在这里衷心的感谢我的导师我的同学,感谢大家对我的帮助,才让我能顺利的完成毕业设计其次,本即时聊天系统采用了C/S模型。服务器在C/S模型中处于一个中心地位。服务器一般同时为多个客户提供服务,这就造成了服务器设计的复杂性。即时通讯服务器是数据中心,它是客户活动的中介,需要同时应对众多客户的请求。再次,本文并没有采用复杂的SQL,ORICLE等数据库,而是通过HIBERNATE框架对数据进行映射,然后利用HBMXML将数据进行存储。上面的这些问题,我以后都将会深深的记住。并且将其运用在实践中去。23致谢为期一个学期的毕业论文(设计)已接近尾声了,我的四年大学生涯也即将圈上一个句号。此刻我的心中却有些怅然若失,因为那些熟悉的计科学院的恩师们和各位可爱的同学们,我们也即将挥手告别了。感谢导师对我一直以来的帮助和指导。24参考文献1尹治本计算机网络及应用教程M成都西南交通大学出版社200282熊晓敏,刘瑛,陈惠清基于JAVA的网络即时通讯系统的设计与实现J计算机与现代化,20051289923罗军舟,黎波涛,杨明,吴俊,黄健TCP/IP协议及网络编程技术北京清华大学出版社200584BRUCEECKEL著,侯捷翻译JAVA编程思想M北京机械工业出版社出版,200095京丽等数据通信原理M北京北京邮电大学出版社200226张虹软件工程与软件开发工具M北京清华大学出版社20047BRUEEEEKELTHINKINGINJAVA第三版M北京机械工业出版社20058SWINGDAVIDMGEARY著JAVA图形设计卷二MPRENTICEHALL/PEARSON20002125附录附录1系统的配置与使用11硬件条件由于系统主要定位于内部局域网,计算机配置需求不是很高,如下即时通信服务器50用户规模双CPUPIV24GMHZ以上,内存1G以上。客户端CPUPIII20以上,内存256M以上。12软件条件即时通信服务器WINDOWS2003。客户端操作系统WIN98、WIN2000、WIN2003、WINXP。13服务器的启动完成数据库设计后启动数据库服务器服务器启动后将显示服务器地址和端口号。14运行客户端在WINDOWS控制台下执行如下命令附录2JDK安装及使用选择好安装路径。安装到计算机上。下来进行一些设置。首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量需要设置三个属性“JAVA_HOME”、“PATH”、“CLASSPATH”,其中在没安装过JDK的环境下。PATH属性是本来存在的。而JAVA_HOME和CLASSPATH是不存在的。首先点“新建”,然后在变量名写上JAVA_HOME,顾名其意该变量的含义就是JAVA的安装路径,呵呵,然后在变量值写入刚才安装的路径“CJDK16”;其次在系统变量里面找到PATH,然后点编辑,PATH变量的含义就是系统在任何路径下都可以识别JAVA命令,则变量值为“JAVA_HOMEBINJAVA_HOMEJREBIN”,其中“JAVA_HOME”的意思为刚才设置JAVA_HOME的值),也可以直接写上“CJDK16BIN”;最后再点“新建”,然后在变量名上写CLASSPATH,该变量的含义是为JAVA加载类CLASSORLIB路径,只有类在CLASSPATH中,JAVA命令才能识别。其值为“JAVA_HOMELIBJAVA_HOMELIBTOOLSJAR要加表示当前路径”,与相同“JAVA_HOME有相同意思”。以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”“运行”,打入“CMD”,进入DOS系统界面。然后打“JAVAVERSION”,如果安装成功。系统会显示JAVAVERSIONJDK“160“。确保安装在C盘文件名为JDK16,环境变量直接复制就可以了。26附录3服务器端安装及使用首先,将系统存放到CCHAT目录下;然后,在安装完JDK后,对系统进行配置,注要是将PATH路径制定到CHAT中的存储路径;最后“开始”“运行”,打入“CMD”,进入DOS系统界面。然后输入CDCCHATSRCORGSELERSERVICEAPPSERVERJAVA。附录4客服端安装附录5使用手册51服务器端安装服务器,并运行服务器;52客户端安装客户端,并运行客户端;用户注册其中要求输入用户昵称,性别,年龄,用户密码以及邮箱,其中,昵称必须唯一值。用户登录打开客户端,输入用户名和密码,点击“登录”;用户聊天在“聊天内容”对应的文本框中,输入聊天信息,在“你对”聊天对象下拉菜单中选择聊天对象,最后点击“发送”按钮;信息查看在“聊天信息”文本框中,查看聊天信息。保存聊天记录点击“保存”,则将聊天信息保存在客户端中;用户退出点击“退出”。27本科毕业设计(论文)管理暂行规定毕业设计(论文)是本科人才培养的重要实践性教学环节,也是学士学位评定的重要依据。为了切实做好我校的毕业设计(论文)工作,规范毕业设计(论文)工作的管理,提高毕业设计(论文)的质量,特制定本规定。一、毕业设计(论文)的主要目的(一)培养学生运用所学知识独立地分析和解决本专业范围内一般问题的能力,培养学生的创新意识和实践能力,使学生从事学术研究的能力得到初步的训练;(二)培养学生理论联系实际的工作作风和严谨认真的科学态度;(三)培养学生分析设计能力、研究实验能力、工程实践能力、经济分析能力、外文阅读能力和计算机的运用能力,以及社会调查、文献资料查阅和论文写作能力。二、毕业设计(论文)的基本要求(一)按照各专业“毕业设计(论文)教学大纲”的要求进行;(二)要具有学术性,要对自然科学或社会科学内某一领域进行专门、系统的研究,并表达其研究成果;(三)要具有创见性,要对学术或工程的某个问题有新的发现、新的构想或新的发展和完善;(四)要具有科学性,要求论述系统而完整,首尾一贯而不前后矛盾,实事求是而不主观臆造;(五)要具应用性,要能解决生产实际问题,在技术改造、生产管理等通过方面有所创造;(六)应做到观点正确、论据充分、推理严密、计算准确,层次分明、条理清楚、语言精炼,有必要的图表和相关资料等;(七)应参阅一定数量的外文资料,并要求在毕业设计(论文)中反映出来。三、毕业设计(论文)的工作程序毕业设计(论文)工作程序分为选题、开题、撰写论文或设计、中期检查、答辩、归档等环节。四、毕业设计(论文)的时间安排毕业设计(论文)工作时间为812周,时间安排应按28本科生毕业设计(论文)工作流程执行,集中用于毕业设计(论文)的时间不得少于专业培养计划规定的周数。五、毕业设计(论文)的领导与管理全校毕业设计(论文)在分管教学副校长领导下进行,分级管理,层层负责。(一)教务处毕业设计(论文)管理工作职责1、汇总各院(部)毕业设计(论文)题目和指导教师安排,协调有关问题;2、做好毕业设计(论文)前期、中期、后期检查工作,对未达到各阶段进度、质量要求或违反有关规定的院(部)提出整改要求;3、开展学校毕业设计(论文)工作评估和研究工作。(二)院(部)毕业设计(论文)管理工作职责各院(部)成立毕业设计(论文)工作领导小组,确定毕业设计(论文)指导教师,布置毕业设计(论文)工作任务,检查本院(部)毕业设计(论文)工作落实情况。院(部)毕业设计(论文)管理工作职责为1、审查毕业设计(论文)选题、下达任务书,安排指导教师,布置毕业设计(论文)有关工作;2、定期检查毕业设计(论文)工作进展情况,协调处理毕业设计(论文)中的有关问题,督促检查指导教师的工作;3、对学生毕业设计(论文)按规范化要求进行形式审查,组织毕业设计(论文)答辩和成绩评定工作。对答辩小组提出的优秀的毕业设计(论文)及评阅答辩中有争议的毕业设计(论文),组织答辩委员会进行复议,最终确定成绩;4、按学校有关要求,保存与毕业设计(论文)有关的电子和纸质文档;5、做好本院(部)学生毕业设计(论文)总结与评估工作。(三)毕业设计(论文)指导教师职责1、指导学生选题,拟定任务书,安排学生做开题报告,编写指导方案,制定计划和工作程序;2、对学生提出具体要求,指定主要参考资料和社会调查内容,规定学生应完成的查阅中外文资料、文献综述、开29题报告、各项实验数据、计算工作(包括上机)、设计(论文)等;3、采取多种方式检查学生的工作进度和工作质量,及时解答和处理学生提出的有关问题,并认真填写毕业设计(论文)指导记录表;4、做好学生外文翻译的评阅工作,指导学生按规范要求正确撰写毕业设计(论文);5、在学生答辩前对毕业设计(论文)(包括设计说明书、计算资料、实验报告、图纸或论文等)进行审查,认真填写毕业设计(论文)评语,指导学生参加答辩;6、根据院(部)安排参加答辩工作。(四)学生在毕业设计(论文)过程中必须做到1、重视毕业设计(论文)过程,明确各环节目的、意义和要求,虚心接受指导教师和实验技术人员的指导,保质保量地完成毕业设计(论文);2、独立完成规定的工作任务,不弄虚作假,不抄袭、剽窃他人成果;3、认真填写本科毕业设计(论文)研究过程记录表;4、毕业设计(论文)成果、资料应于答辩结束后及时交指导教师收存,凡涉及到国家机密、知识产权、技术专利、商业利益的成果未经院(部)许可,学生不得擅自带离学校。六、毕业设计(论文)的选题与开题(一)选题原则1、原则上一生一题,当一个课题比较大时,可以分成几个小课题,每个学生完成一个小课题时必须保证其主要部分为独立进行的工作,使每个学生都受到较全面的训练;2、选题应体现本专业的培养目标,达到毕业设计(论文)大纲的教学要求;3、选题应特别注意有利于学生综合应用所学知识,有利于学生能力的培养,并能保证各专业所应当具有的基本技能的训练;4、选题应与社会、生产、教学、科研等实际相结合。理工科毕业设计(论文)的选题应注重在具有实际应用前景、具有创新构思的课题中选取,鼓励理工科学生进行毕业设30计,其中,工科毕业设计所占比例应不少于80;文科及经管类的选题需注重分析解决当前经济改革、社会现实生活和理论研究中的热点、难点、焦点问题;。毕业设计论文在实验、实习、工程实践和社会调查等社会实践中完成的比例要在50以上。5、选题难度和工作量要适当,使学生能在规定的时间内完成任务;6、选题要有一定层次区分,有利于各类学生提高水平,鼓励学生有所创新;7、各专业的选题数须多于本专业当届的毕业生数。每学年选题应适当更新,不同届选题重复率须控制在20以内;8、各专业选题须经院(部)严格审查并报教务处备案。(二)选题、开题程序1、指导教师提出的毕业设计(论文)课题须经院(部)审查后向学生公布,通过师生双向选择或经协商分配,确定学生毕业设计(论文)题目及指导教师。选题和指导教师一经确定,不得随意更改;2、各院(部)应不迟于第七学期第十四周结束前完成选题工作,毕业设计(论文)任务书不迟于第七学期第十五周前下达给学生,院(部)应将毕业设计(论文)选题汇总表于第七学期第十六周结束前报教务处;3、毕业设计(论文)开题工作应在第七学期结束前完成,包括文献调研、文献综述、开题报告等,院(部)应根据本院(部)毕业设计(论文)工作的具体计划,安排学生在指导小组范围内作开题报告;七、毕业设计(论文)任务书(一)毕业设计(论文)任务书是学生进行毕业设计(论文)的指导性文件,每个学生都必须有自己的任务书;(二)任务书的内容包括设计(论文)研究的背景和依据、任务和基本要求、进程安排等;(三)任务书由指导教师填写,交教研室审查,经院(部)批准后方可实施;(四)毕业设计(论文)结束后,任务书要与毕业设计(论文)一起送交院(部)保存。31八、毕业设计(论文)指导教师配备(一)毕业设计(论文)指导教师应由具有中职及以上专业技术职务的教师或工程技术人员担任,助教等初级职称人员不能单独指导毕业设计(论文),但可根据需要安排协助指导教师的工作。指导教师名单由院(部)毕业设计(论文)工作领导小组审定后,报教务处备案;(二)指导毕业设计(论文)期间,指导教师必须坚守岗位,各院(部)要严格控制指导教师出差。确因工作需要出差的,须经院(部)分管教学副院长批准,并委派水平相当的教师代理指导;(三)对于在校外进行毕业设计(论文)的学生,院(部)可聘请相当于中级专业技术职务及以上的工程技术人员或研究人员担任指导教师,但院(部)必须指定专人进行检查,掌握进度,保证质量,协调解决有关问题;(四)每位指导教师指导的学生数原则上不超过8人,科研、教研能力突出的高级职称教师或具有博士学位人员可适当增加指导人数(最高不超过10人)。指导教师对每个学生的指导每个环节不得少于1次,总计不得少于3次。九、设计(论文)的撰写1、毕业设计(论文)的撰写按“本科毕业设计(论文)撰写规范”执行;2、设计(论文)正文字数文科(除外语类)10000字以上,理工科及外语、艺术类6000字以上;3、所有设计(论文)应按规定格式打印1份,学生所在院(部)留存。另外应将电子版报送教务处。十、毕业设计(论文)答辩及成绩评定(一)毕业设计(论文)完成后必须进行答辩。对通过毕业设计(论文)答辩并达到毕业基本要求的学生方可发给毕业证书。各专业成立答辩小组,具体负责本专业毕业设计(论文)答辩和成绩评定。各院(部)成立答辩委员会,对答辩小组提出的优秀的毕业设计(论文)及评阅答辩中有争议的毕业设计(论文)进行审查、复议,最终确定成绩。答辩工作原则上不聘请校外专家参加,如确因课题需要,必须聘请校外人员参加时,须经院(部)批准;(二)毕业设计(论文)答辩按“本科毕业设计(论32文)答辩程序和实施办法”规定程序进行;(三)毕业设计(论文)的成绩评定,采用五级记分制,即优、良、中、及格和不及格,具体评分标准按照“本科毕业设计(论文)量化评分参考标准”执行。要求优秀与良好比例之和控制在70以内,优秀率在15左右(最多不超过20)。其中优秀、不及格等级须写出具体理由,其余等级须写出简要评语;(四)凡毕业设计(论文)成绩不及格者,按结业处理。十一、毕业设计(论文)工作所需的经费(含开题费、实验费、答辩费、指导教师课时津贴等)由学校按各院(部)毕业生每人350元,统一发放至各院(部),由各院(部)制订分配细则。十二、本规定自公布之日起执行,由教务处负
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年荆门市中荆热能限公司招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 2023年浙江省专升本考试经济学测试题含解析
- 2023年河北省普通高校专科升本科经济学预测试题含解析
- 2023年福建省成考(专升本)经济学预测试题含解析
- 2022年云南省成考(专升本)经济学预测试题含解析
- 2022年山西省成考(专升本)经济学考试真题含解析
- 四川省资阳市乐至县2023-2024学年中考猜题英语试卷含答案
- 2024年高等教育教育类自考-10039教育行政学笔试历年真题荟萃含答案
- 2024年安徽省豪州涡阳县市级名校中考二模英语试题含答案
- 2024年银行知识财经金融知识竞赛-交通银行小企业信贷业务知识竞赛笔试历年真题荟萃含答案
- 西方园林史发展特点和概述第一讲古代园林
- 《Java-Web应用开发基础教程》课件-教材课件汇总完整版ppt全套课件最全教学教程整本书电子教案
- 幼儿园绘本:《小宣传员》 红色故事
- 幼儿园PPT课件:《交通安全教育》
- 谜语大全(拼音复习)讲解学习
- 铝阳极氧化工艺
- 项目部全面风险管理报告总结
- 新能源发电企业风电场场长安全生产知责履职指引
- 视频监控项目质量保证措施
- 英语教学案例 (2)
- 【K12学习】西泠印社出版社三年级下册《书法练习指导》完整教案
评论
0/150
提交评论