




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕 业 设 计(论 文) 题目 即时通讯聊天系统 姓 名 院 系 专 业 指导教师 年 月 日即时通信聊天系统的设计与开发摘 要互联网中的即时通讯聊天系统的研究已经成为了当今网络通讯技术发展的一个热点,局域网内的即时通讯聊天系统更是成为了当今社会通讯技术发前沿阵地。局域网即时通讯软件的诞生不仅加强推动了企业工作效率的提高,为培训企业的教学带来了新的思路和手段,还为人们之间的交流创建了一种新型的、廉价的、快讯的、简便的工作方式,目前的即时通讯系统不仅仅是娱乐聊天的工具,更是影响着局域网内部的管理及其交流方式。本系统采用客户机/服务器(c/s)模式,本系统开发环境是java 6.0,遵循网络通讯技
2、术基本数据传输协议tcp/ip协议,本课题的最基本的功能是通过计算机之间的文本数据的互换的形式实现思想的交流和沟通,优点是方便快捷。关键词:数据传输,传输控制协议,服务器,客户端,c/s模式the design andimplementation of the instant messaging systemabstractthe internet chat of instant communication system has become the current network communication technology of the development of a hot, lo
3、cal area network of instant messaging chat system but also became todays society communication technology hair forward position. lan instant messaging software birth not only strengthen promote the enterprise work efficiency, increase the enterprise training brings new ideas and teaching means, for
4、communication among people created a new, cheap, flash, simple way of working, and at present instant communication system is not just entertainment chat of tools, but also influence the local area network management and its internal communication. the system uses the client/server (c/s) mode, this
5、system development environment is java 6.0, follow the network communication technology basic data transfer protocol tcp/ip protocol, the subject of the basic function of computer is through the exchange of data between text in the form of the implementation, exchange and communication, the advantag
6、e is convenient and quick.key words: data transmission, control protocol, server, client, c/s mode目录前言1第1章 系统的需求分析31.1 课题技术支持31.2 系统分析31.3 需求分析31.4 相关理论知识41.4.1 网络通信与网络协议基础41.4.2 tcp/ip协议族41.4.3 面向对象的开发过程51.4.4 开发工具61.4.5 运行环境61.4.6 开发方法的选择7第2章 系统的总体设计92.1 功能需求描述92.2 目标系统要求92.3 总体设计9第3章 系统主要功能模块设计12
7、3.1 课题分析123.1.1 系统协议123.1.2 系统核心技术123.2 客户端设计图例123.2.1 客户端流程图123.3 客户端功能介绍及实现143.3.1 客户端相关类的简介143.3.2 客户端的管理类类的简介203.3.3 辅助类或接口203.4 服务器设计图例213.4.1 服务器流程图213.5 服务器端功能介绍及实现223.5.1 服务器端相关类的简介233.5.2 服务器与客户端的数据传递原理243.6总结24第4章 系统测试264.1 课题测试264.2 测试类型简单介绍264.2.1 单元测试264.2.2 集成测试264.2.3 有效性测试274.2.4 系统测
8、试274.3 测试过程274.3.1 登录测试274.3.2 注册测试274.3.3 聊天测试294.4 总结29结论30谢 辞31参考文献32前言选题背景随着互联网技术的广泛普及和应用,通信和电子信息产业在全球迅猛发展起来,从而也带来了软件技术人才需求量的不断增加,软件技术教育和人才培养成为社会所关注的一项重要战略任务。为了加强软件开发技术方面的相关知识的教育,为加强学员间的日常的学习交流,以及平时工作时问题的交流,于是进行自主研发局域网内的即时通信系统。同时通过项目加强新同事间的交流与技术的配合,为以后的工作奠定良好的基础。所以开发并研究了本课题。随着网络的普及,人们迫切希望能通过一种现代
9、化的信息技术平台,更高效的学习软件开发技术知识; 宏达科技有限公司也希望有这样一种方式,借助它提高教学质量和人才培养质量。主要内容及研究意义在信息爆炸、技术为王的今天,即时通讯技术得到了迅猛的发展,可对其背后的哲学思考却被忽略和淡化,此文着重反思人的主体性,以期抛砖引玉,给即时通讯时代个人主体性的健康发展提供借鉴和现实的积极启示。该系统以建设一个专业的有特色的专业教学工具为出发点,以提高学员和广大软件开发爱好者的软件开发技术知识,以利于更好的教学同时加强学员和老师、学员与学员之间的学习交流,以java编程语言为基础,涵盖了java中的gui、swing、网络编程、网络通讯、多线程技术等一些ja
10、vase技术所开发该系统的主体是局域网聊天通信,它主要实现了用户注册、登录功能,提供了单对单,单对多之间的私人信息聊天,局域网内之间的群聊,以及局域网内人与人之间的文件传输等功能,它给学员提供了一个交流、互动的平台,为学员的学习提供了坚实的学习平台。在当今信息瞬息万变的时代,在计算机普及千家万户的今天,此系统的开发在交流和现代化的教学体系改革方面发挥了积极的作用。论文的组织结构第一部分:前言。介绍了论文的选题背景、主要内容和研究意义。第二部分:系统的需求分析。对系统的开发与设计进行需求分析。第三部分:系统的总体设计。对整个系统进行总体的概述说明。第四部分:系统主要功能模块的设计。对各模块的设计
11、进行详细说明。第五部分:局域网聊天系统测试。对系统的各个模块进行测试。第六部分:结论。对整个设计的总结。第七部分:谢辞。第八部分:参考文献。 第1章 系统的需求分析1.1 课题技术支持运用面向对象思想,通过较完善的挖掘,构建稳定的底层通讯框架。目标:“真实建模”“最大可重用”“对变化有弹性”手段:抽象封装/多态/继承准则:开闭原则/单一职责原则/对接口编程/里氏代换法则等工具:各种设计模式(单例/工厂/策略/代理/门面/适配器等)1.2 系统分析应用构建通常分层实现表示层、业务层、持久层,结合该课题,业务层分析:课题核心是通讯,考虑到通讯是很多其他应用实现的核心部分,建议搭建健壮并独立的通讯平
12、台,以适应未来系统扩展和移植,目前的短消息传递可以作为该平台的基本扩展,以组件的形态插入到平台上满足需求。数据访问建议采用数据访问对象,封装对持久层的访问细节。目前采用文件持久层,定制合理的文件格式,提高效能。并对持久层的未来扩展,比如改为数据库存储做好铺垫。表示层应脱离业务模型层,独立出来,表示层调整不应振动到业务层。表示层一般考虑用户体验问题,ui简单易用并美观大方,才是最理想的软件。1.3 需求分析聊天工具大多数由客户端程序和服务器程序外加服务端,本程序采用客户机/服务器架构模式。通过java提供的socket类来连接客户机和服务器并客户机和服务器相互通行,由于聊天是多点对多点的聊天。主
13、要有两个应用程序,分别为客户程序和服务器程序。服务器应用程序主要用于程序转发,以及上所有用户发送系统信息;客户端程序主要用于客户端聊天记录的显示和信息输入,采用client/server体系结构,即客户端/服务器结构。聊天服务器专门用于监控用户状态和转发信息,客户端负责接收消息用户序列和消息文本发送到服务器。该聊天系统实现群聊用户登录,退出聊天系统等功能。1.4 相关理论知识本课题涉及到了网络数据传输,需要了解相关的数据网络传输知识,网络数据的传输是本课题不可绕过的技术,所以了解相关网络数据传输的知识是相当重要的。1.4.1 网络通信与网络协议基础java语言可称得上是当今internet上最
14、流行的编程语言。对一个网络功能,其他语言需要数行或数页代码,而java也许只需要一条或几条语句。下面介绍java网络编程涉及的计算机网络的术语、概念。计算机网络是计算机技术与通信技术相结合而形成的一种新的通信形式。计算机网络由硬件和软件组成,软件包括网络操作系统、通信软件和网络通信用的通信协议。internet允许各个部门和组织根据自己的需求和经济能力选择自己的网络,然后再寻求一种方法将所有类型的网络互连起来。internet网络体系结构也称为internet网络通信协议,它分为四个层次,tcp/ip协议(transmission control protocol/internet proto
15、col,传输控制协议/网际协议)是它不同层次协议的总称。1.4.2 tcp/ip协议族tcp/ip协议族中的传输层和互联网层协议为网络中的各主机提供通信服务,它们也是实现应用层协议的基础。传输层tcp协议和互联网层ip协议是tcp/ip协议族中的核心协议。1. 传输控制协议tcp传输控制协议(tcp)tcp/ip协议族中的传输层,提供可靠的数据传输服务。tcp是一种面向连接的传输层协议,意味着该协议准备发送数据时,通信之间必须建立起一个逻辑上的连接。tcp协议位于ip协议的上层,通过提供效验、流控制及序列信息弥补ip协议可靠性的缺陷。2. 互联网层协议ip互联网层协议(ip)属于tcp/ip模
16、型的互联网层。提供关于数据应如何传输以及传输到何处的信息。ip是一种是tcp/ip可用于网络连接的协议,即tcp/ip可跨域多个局域网段或通过路由器跨域多种类型的网络。在一个网际环境中,被连接在一起的单个网络被称为子网。数据帧的ip部分被称为一个ip数据包,ip数据包如同数据的封面,包含了路由器在子网中传输数据所在必须的信息。ip数据包包括头和数据,总长度不能超过65535字节。ip协议是一种不可靠的、无连接的协议。然而,tcp/ip协议族中更高层协议可使用ip信息确保数据包按正确的地址进行传输。ip数据包并不包含一个校验和部件,包头校验仅仅验证ip包头中路由信息的完整性。如果当数据包被接收时
17、伴随信息的校验和值不正确,则数据包将被认为已破坏并被抛弃,同时,一个新的数据包被发送。3. 用户数据包协议udp用户数据包协议udp(user datagram protocol),位于tcp/ip模型的传输层。不同于tcp的是,它是一种无连接的传输服务,它不保证数据包以正确的顺序接收。1.4.3 面向对象的开发过程面向对象的软件开发和相应的面向对象的问题求解是当今计算机技术发展的重要成果和趋势之一,面向对象编程具备了几个优点,比如:代码维护方便、可扩展性好、支持代码重用技术等等。这些优点是面向过程编程语言所不具备的。下面我们就来谈谈面向对象技术的这些优点:1. 模块化模块化是面向对象编程中的
18、一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。2. 可扩充性是对现代应用软件提出的又一个重要要求,即要求应用软件能够很方便,容易的进行扩充和修改,这种扩充和修改的范围不但涉及到软件的内容,也涉及到软件的形式和工作机制。面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。面向对象的程序设计可以用很好的可扩充性.这是由于类可以根据人对事物的理解而进行丰富,没有必要进行作大的改动,可以利用继承,对新的类添加属性和方法.用它可以生成系统的简单雏形,在征求用户的意见,在加
19、入新的类,以及类的方法与属性等。3. 代码重用可重用性是面向对象软件开发的一个核心思路.面向对象程序设计的抽象,封装,继承,多态的四大特点都无一例外,或多或少的围绕着可重用性这个核心并为之服务。由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。1.4.4 开发工具采用jdk1.6开发包,java运行环境为:java(tm) se runtime environment (build 1.6.0_10-b33)开发工具:myeclipse8.51.4.5 运行环境硬件环境处理器:intercr300 或更高内存:128mb或更高(建议256mb)硬盘空间:80
20、mb以上软件环境软件环境是一个系统开发的工具,它取决于开发人员对软件的熟悉程度,如果开发人员选择一个不熟悉的软件开发会大大增加开发系统所需要投入的成本,所以说选择软件环境也是很重要的。操作系统: windows 2000/windows xp软件开发语言:java1.4.6 开发方法的选择在开发方法的选择上,选择了演绎式原型法与生命周期法相结合的方法。具体来说,就是在系统开发之前对系统有一个总体框架设想,各功能单元的结构和功能也比较清楚,但是还没有具体实现。系统完成什么功能,分成哪几个部分,各个部分又有哪几个模块,都已理解掌握,且以后不需要做更大的变动,只是具体到每个模块,还没有全部实现。具体
21、地设计可能是完全实现一个模块,也可能是用一个效率高地模块代替一个旧模块。信息系统的开发是一项比较复杂的工作,我们必须选用科学的有效的开发方法。近年来,国内外已逐步总结出一些开发信息系统的方法和技术,但是,从目前的情况来看,系统的开发技术仍是一个比较薄弱的环节。那么根据本系统开发的要求,本系统选择了生命周期法和原型法相结合的方法。现具体介绍如下:生命周期这个概念源于系统工程方法。广义地说,任何系统均有其发生、发展、成熟、消亡或更新换代的过程,这个过程称为系统的生命周期。主要包括系统调查阶段、系统分析、系统设计、系统实施及系统维护与评价五个部分。根据系统设计而对整个系统实施,包括物理实施,程序设计
22、,调试等。实施是最后的一步,关系着最后的成功。在建筑学和机械设计学中,“原型”指的是其结构、大小和功能都与某个物体相类似的模拟该物体的原始模型。在管理信息系统开发中,用“原型”来形象地表示系统的一个早期可运行版本,它能反映新系统的部分重要功能和特征。“原型方法”则是利用原型辅助开发系统的一种新方法。原型方法要求在获得一组基本的用户需求后,快速地实现新系统的一个“原型”,用户、开发者及其他有关人员在试用原型的过程中,加强通信和反馈,通过反复评价和反复修改原型系统,逐步确定各种需求的细节,适应需求的变化,从而最终提高新系统的质量。因此可以认为原型方法确定用户需求的策略,它对用户需求的定义采用启发的
23、方式,引导用户在对系统逐渐加深理解的过程中作出响应。原型法主要包括确定系统基本需求阶段、构造初始原型阶段、原型的使用评价阶段、修改原型阶段和确定模型后的处理阶段。原型法的基本思想是:凭借着系统分析人员对用户要求的理解,在强有力的软件环境支持下,快速地给出一个实实在在的模型(或称原型、雏形),然后与用户反复协商修改,最终形成实际系统。在本系统中选择了演化型(evolutionaryprototying)原型法,其目的不在于改进规格说明和用户需求,而是将系统改造得易于变化,在改进原型的过程中将原型演化成最终系统。它将原型方法的思想贯穿到系统开发全过程,对满足需求的改动较为适合。第2章 系统的总体设
24、计2.1 功能需求描述 聊天工具大多数由客户端程序和服务器程序外加服务端,本程序采用客户机/服务器架构模式。通过java提供的socket类来连接客户机和服务器并客户机和服务器相互通行,由于聊天是多点对多点的聊天。主要有两个应用程序,分别为客户程序和服务器程序。服务器应用程序主要用于程序转发,以及上所有用户发送系统信息;客户端程序主要用于客户端聊天记录的显示和信息输入,采用client/server体系结构,即客户端/服务器结构。聊天服务器专门用于监控用户状态和转发信息,客户端负责接收消息用户序列和消息文本发送到服务器。该聊天系统实现群聊用户登录,退出聊天系统等功能。2.2 目标系统要求整体上
25、要实现对用户注册,登陆,好友上线,好友下线,单发消息,群发消息等功能。2.3 总体设计为了使本系统在设计中更加方便和直观,所以使用了面向对象的设计思想。面向对象设计不再是单纯的从代码的第一行一直编到最后一行,而是考虑如何创建类和对象,利用类和对象来简化程序设计,并提供代码的封装和可重用性,便于程序的维护与扩展。所谓的对象是一种抽象的名称,用来对应实现世界存在的东西。一个窗口、一个按钮、一个菜单都可视为一个对象,而按钮对象、菜单对象、又会出现在窗口对象中,因此按钮对象、菜单对象便是窗口的组件之一。对象内部的数据是不能随意更改的,必须由外部向其传递信息,再由对象按其方法加以处理。用户无需知道其任何
26、细节,操作是封闭的,对象之间能通过函数调用相互通信。类可视为一个产品模具、一个模块。在面向对象设计中,类是对象的原型,是对象的制作器。类的概念是面向对象程序设计最重要的特征。所谓类,是指由数据结构及其相关操作所形成的集合,描述该类任一对象的共同的行为特征,是对一组性质相同的对象的程序描述,概括了对象的共同性质和数据。面向对象设计的核心是类的设计。本系统主要划分为客户端、服务器两部分。客户端主要完成对用户发送的信息进行处理、登录、注册的处理,客户端功能如图2-1所示。图2-1 客户端功能图服务器段主要是接受客户端响应的请求来就行处理,在客户端发送给服务器的时候将请求封装成特定格式的对象发送给服务
27、器,服务器根据请求来做出响应的处理,服务器端的功能图如图2-2所示。图2-2 服务器端功能图第3章 系统主要功能模块设计3.1 课题分析系统需求分析由项目小组成员经过多次的小组会议与讨论,最终制定一套统一的系统设计框架(用例和类图)。经过讨论为促进小组成员对课题核心技术的理解和掌握,在设计阶段要求课题小组成员都要对课题核心技术进行相对的设计,另外要完成系统部分具体功能的实现。3.1.1 系统协议本系统为即时通信系统,主要以传递信息为主,经过分析制定信息传递格式为:定义一个类,让类实现可序列化接口,类中定义其需要传输的信息为其成员变量,信息以字可以序列化的对象进行传递。3.1.2 系统核心技术1
28、. 客户端:客户端利用对套接字输入流、输出流进行传递保持连接的持续。设计一个工具类,其类定义两个map成员变量,用于存储单独聊天窗口和群聊聊天窗口。在定义一个工具类存储好友列表窗体。2. 服务器端:采用多线程,定义信息处理接口,利用map存取在线用户与其对应的输出流,采用数据库技术存储用户的各种信息。3.2 客户端设计图例3.2.1 客户端流程图客户端功能图简明扼要地展现了客户端的工作流程,如图3-1所示。图3-1 客户端流程图3.3 客户端功能介绍及实现客户端是多个图形界面的组合,包括注册界面、登录界面、好友列表界面和聊天窗体界面,各个图形界面完成各自的功能。其主要功能如下:(1) 完成用户
29、的注册;(2) 客户的登陆;(3) 客户信息之间的单聊、群发。3.3.1 客户端相关类的简介1. 客户端相关类的简介qqclientlogin类功能:qq客户端登录界面登录界面实现介绍:整个frame由北部,中部,南部三个部分组成。北部有一个label; 中部有一个panel(panel2),而这个panel是一个3行3列的网格布局;南部有一个panel(panel1) ,这个panel上有三个按钮。登录界面如图3-3所示。图3-3 登录界面注册窗体:单机登录界面注册向导则关闭当前登录窗体,弹出注册窗体,注册窗体需要用户注册用户的基本信息,注册窗体如图3-4所示。图3-4 注册窗体2. 客户端
30、相关类的简介qqfriendlist类功能:qq客户端好友列表框界面infomback类中更新在线的好友情况,关键代码如下:boolean b = (boolean) informback.get(0);if (b) / 如果为真,用户上线通知user user = (user) informback.get(1);system.out.println(user.getnickname() );rf.add(user);/ 添加到界面中system.out.println(user.getnickname()+上线); else / 否则为下线通知rf.remove(from);system.
31、out.println(from + 下线了);infom类中更新离线线的好友情况if(!b)updatable updateable=(updatable)messagecontextforserver.getneed(updatable); user user=(user)informback.get(1);updateable.update(user);messagecontextforserver.removeoutline(from); iterator sendable = messagecontextforserver.getonlinevalue(); while(sendab
32、le.hasnext()try sendable.next().send(message); catch (ioexception e) e.printstacktrace();好友列表框实现介绍: 这个列表框是个选项卡布局。分为“我的好友”,“陌生人”两个选项卡。在此,只实现我的好友选项卡,其余两个制作成两个按钮,不实现其功能。整个panel(panel1是个borderlayout布局)由北部,中部,南部三个部分组成。北部有一个button(我的好友);中部有一个scrollpane (该控件中还有panel(panel2),该panel是一个n行一列的网格布局(假设有50个好友)。其中存
33、放好友头像和编号(好友头像由label数组处理);南部还有一个panel(panel3)(该panel是一个2行1列的网格布局,其上放着两个按钮“陌生人”,群发信息”)。总共用到三个panel,注意顺序。好友列表界面如图3-5所示。图3-5 好友列表3. 客户端相关类的简介qqchat类功能:这是与好友单聊的界面如图3-6 聊天窗体聊天界面实现介绍: 整个frame只有四个控件组成。一个文本域(textarea),两个面板(panel), 两个文本框(textfield),三个按钮(button)。这个frame是个默认的borderlayout布局,中部是个文本域;南部是个面板,而这个面板上
34、面有一个文本框和一个按钮;北部是个面板,而这个面板是个默认的borderlayout布局,北部有一个文本框,西部和东部各有一个按钮。聊天窗体如图3-6所示。图3-6 聊天窗体4. 客户端相关类的简介qqallchat类功能:这是与好友群聊的界面showallmessage(message m)显示群聊信息聊天界面实现介绍: 整个frame只有四个控件组成。一个文本域(textarea),一个面板(panel), 一个文本框(textfield),一个按钮(button)。这个frame是个默认的borderlayout布局,中部是个文本域;南部是个面板,而这个面板上面有一个文本框和一个按钮。5
35、. 客户端相关类的简介clientconserverthread类功能: 这是客户端和服务器端保持通讯的线程。不断的读取从服务器端发来的信息并进行判断是哪类型的信息,然后做相应的处理。功能描述:本系统之间的通信遵守一定的协议当用户登录的时候将自己的帐号密码与登录的标志发送给服务器,服务器接收到信息以后解析一下信息,验证帐号密码是否正确,若是正确则客户端与服务器建立连接,同时服务器将上线好友的信息发送给每一个在线的好友,刷新好友列表,同样的当好友下线的时候发送信息给服务器,服务器进行解析将下线好友信息发送过给每一个在线好友进行好友列表的刷新,当单发群发的时候都发送信息给服务器,服务器根据之前定力
36、的协议进行处理,发送给相应的用户。/判断接收到的是否是好友上线的信息boolean b = (boolean) loginback.get(0);if (b) / 如果为真,登陆成功user user = (user) loginback.get(1);rf.add(user);/ 添加自己的信息arraylistonlineuser=(arraylist)loginback.get(2);for (user u : onlineuser) rf.add(u);/ 添加在线好友的信息elseint n = (integer) loginback.get(1);if (n = 0) joptio
37、npane.showmessagedialog(null, 此用户已登录!, 错误,joptionpane.error_message); else joptionpane.showmessagedialog(null, 账户或密码错误!, 错误,joptionpane.error_message);6. 客户端相关类的简介qqclientconserver类功能:这是客户端连接服务器的后台验证用户注册、登录信息的地方,若登录成功为该用户启动与服务器通讯的线程。当用户登录的时候启动一个线程将自己的帐号密码进行处理,处理成特定的格式,发送给服务器服务器将帐号、密码提取出来,与服务器中保存的信息进
38、行比较,如果帐号密码都正确则,让客户端与服务器成功连接,将好友的信息发送给每一个好友。3.3.2 客户端的管理类类的简介1. manageclientconserverthread类功能:这是一个管理客户端和服务器保持通讯的线程类 使用hashmap将用户与该用户与服务器通讯的线程进行绑定 addclientconserverthread(string qqid,clientconserverthread ccst) clientconserverthread. getclientconserverthread(string qqid)通过qqid取得该线程2. manageqqfriendl
39、ist类功能:管理好友列表的界面类 使用hashmap将用户自己与自己的好友列表进行绑定 addqqfriendlist(string qqid,qqfriendlist qqfriendlist) qqfriendlist getqqfriendlist(string qqid)3. manageqqchat类功能:这是一个管理用户聊天界面的类 使用hashmap将和每个好友与对应的聊天界面进行绑定 addqqchat(string loginidandfriendid,qqchat qqchat) getqqchat(string loginidandfriendid)获取聊天界面4. m
40、anageqqallchat类功能:这是一个管理用户群聊天界面的类使用hashmap将和每个好友与对应的群聊天界面进行绑定addqqallchat(string loginidandfriendid,qqallchat qqallchat)getqqallchat(string loginidandfriendid)获取群聊天界面3.3.3 辅助类或接口可序列化类:为了课题的实现方便,数据的传输利用了java语言中特有的一个语言特点对象的可序列化。利用对象的可序列话,实现了数据在网络中的传输。必须注意一点的是,因为是实现在不同独立计算机上的数据传输,所以服务器与客户端都有一份可序列化类的包,其
41、序列化编号必须一致,这样在数据传输过程中服务器与客户端才能够认识该序列化的对象,这些序列化对象其实就相当于服务器与客户端之间的一个协议。可序列化类传递的信息类:message类该类是信息传递包,是普通的信息在服务器与客户端之间传递信息的最基本的可序列化对象,该包是客户端之间聊天信息传输的载体,里面包含了通讯信息的基本内容。可序列化类用户信息类:user类该类是传输用户登录信息的包,其成员变量是登录界面输入的帐号与密码,通过该类的包装传输到服务器,服务器进行验证。其用途在连接服务器是发送。定义统一的信息类型接口:messagetype接口(为了客户查看的方便)public interface m
42、essagetype string message_register_fail = -1;/表明用户注册失败string message_register = 0;/表明用户注册string message_succeed = 1;/表明登录成功string message_login_fail = 2;/表明登录失败string message_comm_mes = 3;/普通信息包string message_get_onlinefriend = 4;/要求的在线好友包string message_ret_onlinefriend = 5;/返回在线好友的包string message_l
43、ogin = 7;/表明用户登录string message_chatall_mes = 8;/群聊信息包string message_file = 9;/文件传输包string message_live_onlinefriend = 10;/要求的下线好友包3.4 服务器设计图例3.4.1 服务器流程图服务器端流程图简明扼要地展现了服务器端的工作流程,如图3-7所示。图3-7 服务器流程图3.5 服务器端功能介绍及实现服务器起到中转信息,服务器端用于接收客户端发来的各种信息类型(注册信息、登录信息、好友上线信息、好友下线信息、普通聊天信息、文件传输信息以及群内聊天信息),并根据不同的信息类型
44、作相应的信息处理,用户好友管理,用户注册等等核心功能,都要在服务器的正常运行下才能正确的执行这些功能,因此服务器的好坏直接关系到整个局域网聊天系统的好坏,服务器端的设计也相应的成为了本系统的核心设计。其主要功能为:实现连接来自不同端口的socket,并为之提供独立线程,完成信息的转发。3.5.1 服务器端相关类的简介1. 服务器相关类的简介myqqserver类功能: qq服务器端在监听、等待某个qq客户端,并进行连接。 验证注册的用户是否存在; 验证登录的用户是否存在,若存在登录的用户则启动与该客户端的通信线程。2. 服务器相关类的简介manageclientthread类功能: 用于绑定管
45、理用户id和服务器与用户通信的线程,用hashmap将用户和与客户端通讯线程进行绑定。关键代码如下:public static hashmap hm = new hashmap();/向hm中添加一个客户端通讯线程public static void addclientthread(string uid,serconclientthread ct) hm.put(uid,ct);3.服务器相关类的简介serconclientthread类功能:服务器和某个客户端的通信线程,对从客户端取得的消息进行判断,然后做相应的处理。服务器端接收到信息后提取出来相应的信息判断若id的值为空则为群聊天则将信息
46、发送给每一个在线的好友,如果不为空的时候就发送给对应的好友。4.服务器相关类的简介myserverframe类 功能:这是服务器端的控制界面,可以完成启动服务器,关闭服务器。3.5.2 服务器与客户端的数据传递原理服务器与客户机之间存在着大量的数据传递,主要通过3个过程:首先通过服务器端套接字serversocket的构造方法构建服务器套接字,并绑定特定端口。然后在客户机端程序中,利用客户端套接字socket的构造方法socket(inetadress addresss ,int port)创建一个套接字流,并将其连接到指定ip地址的指定端口号,其ip地址可以用inetadress。getby
47、name(服务器ip地址)表示,从而与服务器ip地址可以表示为:inetadress。getlocalhost(),port)在客户端建立数据输入流类objectinputstream的实例read,用于从服务器中读取数据,同时建立数据输出流类objectoutputstream的实例write 用于上服务器发送数据,从而构造了客户机与服务器之间的数据通道。通过类objectinputstream的read()方法读取来自数据流的数据,如:readobject() 读取序列化对象。通过类objectoutputstream的writeobject()方法上数据流写入数据,如:writeobje
48、ct ()写入序列化对象。3.6总结这个系统的总体设计主要分为客户端、服务器两大部分,客户端登录注册的时候遵循一定的协议将客户的信息发送给服务器,服务器进行解析若是登录将好友的信息发送给在线的每一个好友,若是注册将注册的信息发送给服务器保存在服务器端,在发送消息的时候遵守格式发送信息给服务器,服务器判断出来是群发还是单发单发就发送给相应的用户,群发的时候就发送给每一个在线的好友。 第4章 系统测试4.1 课题测试在系统的详细设计以及编码过程进行完成之后,就要对办公自动化管理系统的程序进行测试。软件测试是软件开发过程中的一个重要环节。软件测试是为了发现程序中的错误而执行程序的过程;好的测试方案是
49、极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了至今为止尚未发现的错误的测试。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,以发现程序错误的过程。测试阶段的主要任务是尽量发现程序错误,改正错误,直至程序的功能、性能满足用户需求。在课题测试阶段,系统过分析,测试方案针对系统的登录、注册、在线人员的更新、单聊、多聊进行分布测试。测试主要分成两部分,第一部分测试主要是在开发期间,当完成单个组件或功能进行测试,这部分测试也成为白箱测试,即在开发者的测试,了解各个代码的用途、作用,更具其知识解决相应的问题;第二部分则是在测试阶段进行的全面的测试,同时也称为黑箱测试,该测试假设完全不知道代码的情况下进行测试,主要测试课题还存在那些漏洞及课题在开发中没有想到的功能等。4.2 测试类型简单介绍4.2.1 单元测试又称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。其目的是发现模块内部的错误,修改这些错误使其代码能够正确运行。其中,多个功能独立的程序模块可并行进行测试。4.2.2 集成测试又称组装测试,它的任务是按照一定的策略对单元测试的模块进行组装,并在组装过程中进行模块接口与系统功能测试。集成测试的策略主要有两种:一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋买卖补充协议书参考二零二五年
- 2025年四方合作协议合同范本
- 2025年一氧化二氮项目合作计划书
- 代办检测合同样本
- 人教版《中学美术八年级上册》教案说课稿
- 剪剪撕撕画画贴贴教学设及反思
- 公司分账合同样本
- led屏保修合同标准文本
- 工程挂靠承诺书正式版
- 一年级下册数学教案-7.4-解决实际问题复习丨苏教版
- 研究生三年学习计划
- 2024年国网山东省电力公司招聘笔试参考题库附带答案详解
- 动物饲养与养殖中的危险源识别与风险评估
- 《电话的发明》课件
- 酒店投资项目融资计划书
- 人教版新教材高中英语选择性必修四全册单词语境记忆(复习必背)
- 蔬菜水果配送投标方案
- 西藏自治区班戈县班嘎错、(3湖)盐湖液体矿补充勘查环评报告
- 电机设计计算公式
- 赫尔《期权、期货及其他衍生产品》(第10版)笔记和课后习题详解
- 继父(2015浙江杭州中考记叙文阅读试题含答案)
评论
0/150
提交评论