收藏 分销(赏)

网络聊天系统的设计和实现.doc

上传人:精*** 文档编号:2948160 上传时间:2024-06-11 格式:DOC 页数:35 大小:230.54KB
下载 相关 举报
网络聊天系统的设计和实现.doc_第1页
第1页 / 共35页
网络聊天系统的设计和实现.doc_第2页
第2页 / 共35页
网络聊天系统的设计和实现.doc_第3页
第3页 / 共35页
网络聊天系统的设计和实现.doc_第4页
第4页 / 共35页
网络聊天系统的设计和实现.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、 网络教育学院本 科 生 毕 业 论 文(设 计) 题 目:网络聊天系统设计和实现学习中心: 层 次: 专科起点本科 专 业: 年 级: 年 春/秋 季 学 号: 学 生: 指导老师: 完成日期: 年 月 日内容摘要伴随互联网技术飞速发展,网络已经成为大家生活中不可缺乏一部分,经过网上聊天已经成为人和人之间网络通信聊天,交流和联络一个方法。所以,更多网站开始提供在线聊天功效。和此同时,以其方便,快捷,成本低优势,聊天室众多企业青睐,很多企业网站也加入了聊天室,从而促进消费者和消费者和消费者之间通信模块。本文是一个软件工程在线聊天系统,专注于系统开发,使用系统分析,设计和思维测试软件工程知识来实

2、现描述,其中包含三个关键方面软件生命周期:软件定义(问题定义,可行性研究,需求分析),软件开发(总体设计,具体设计,编码,测试)和运行维护。经过利用软件工程知识处理实际,加强问题,清楚,可靠标准化,使得程序易于维护。该软件使用JAVA编写,含有良好兼容性,易于实现。操作简单,使用方便结构简单,易于搜索,实用聊天室。关键词:网络;通信;套接字目 录内容摘要I引 言41 概述51.1 课题研究背景和意义51.2 本文关键内容及组织结构52 网络应用系统开发技术介绍72.1 TCP/IP协议概述72.2 用户/服务器模型72.3 Socket网络编程72.4 开发工具和运行环境82.5 其它技术83

3、 网络聊天系统分析和设计103.1 可行性分析103.2 需求分析103.3 系统总体设计113.3.1 系统架构模型123.3.2 功效模块设计123.3.3 系统通信设计123.3.4 数据库设计134 网络聊天系统具体设计及实现144.1 服务器端设计和实现144.1.1 服务器等候连接进程/线程设计154.1.2 服务器处理用户端信息进程/线程设计164.2 用户端设计和实现164.2.1 登陆模块164.2.2 主界面模块164.2.3 私聊模块194.2.4 聊天统计管理模块215 测试235.1 软件测试概述235.2 测试策略和结果分析23结论28参考文件29引 言 伴随不停投

4、入信息技术,网络,作为一个新生事物,多年来现代技术普及得到了前所未有深入,网络应用不停涌现层出不穷,全部层级和全部年纪用户提供不一样个性化服务。现代小型和中小型企业领导人认识到,深入提升企业信息化必需性。为了使企业在瞬息万变信息时代生存,适应猛烈市场竞争,现代企业要求是能够尤其是领导含有能力职员,实时通信系统是搭建在职员之间沟通和交流,是必需条件。系统开发是一个很复杂系统工程。这里,对基础方法和系统发展方法进行介绍,和有内容是在论文里列出。 为了提升市场竞争力,我们必需全方面调查和对市场具体研究,同时也有良好用户服务。企业应该在复杂环境对策。职员和职员和领导之间交流立即x性就显得尤为关键,对于

5、企业网上聊天系统是一个交流和沟通平台,系统能够成为中小企业沟通理想平台。假如信息能立即反馈,立即处理并做出对应动作,将能深入加强在现代经济市场中小型企业竞争力。 网络通信是网络应用一个关键表现。即时通讯是网络应用一个关键方面。聊天系统,关键用于小型企业,学校或小型局域网。该应用程序使得短距离通信更高效,更便捷,更高效,以反应该代IM特点。 该系统可满足中小型企业,学校内部网络即时通讯需求需要,内部网络业务正常环境下,提供了即时通信能力,本系统采取JAVA开发。该系统可为中小型企业共同努力,相互沟通提供了一个功效强大工具,在局域网中使用这个系统,能够为企业提供职员沟通帮助,以提升工作效率。1 概

6、述1.1 课题研究背景和意义 伴随现代技术普及和信息技术不停普及,网络作为一个新事物,多年来得到了前所未有普及和深入,网络应用层出不穷,给用户各个阶层和各个年纪段提供了不一样个性化服务。和现代中小企业领导认识到深入提升企业信息化必需性。为使企业在瞬息万变信息时代生存下来,适应猛烈市场竞争,现代企业要求是能够沟通,尤其是领导者和职员之间共同能力和实时通信系统是在这么条件下诞生。系统开发是一个很复杂系统工程。介绍了系统开发基础过程和方法,并对相关文件进行了介绍。 为了提升市场竞争力,我们必需充足调查和具体研究市场,而且还有一个良好用户服务。企业在复杂环境中应作出对策。职员和职员之间即时交流和领导是

7、尤其关键,网上聊天系统是企业一个沟通和沟通平台,系统能够成为中小企业沟通理想平台。假如能够立即反馈信息,立即处理并做出对应行动,将能够深入提升中小企业在现代经济市场中竞争力。 网络通信是网络应用一个关键表现。即时消息是网络应用一个关键方面。该聊天系统关键用于小企业、学校或小局域网。此应用使短距离通信更高效、方便,更有效地表现了现代通信特点。 该系统能够满足中小企业需求,学校内部网络即时通信需求,内部网络正常操作环境下,提供即时通信能力,本系统采取JAVA开发。该系统能够为中小企业协同工作,相互沟通提供一个强大工具,利用该系统在局域网中,能够为企业职员沟通提供帮助,提升工作效率。1.2 本文关键

8、内容及组织结构本文研究内容为局域网聊天系统设计和实现。本文组织结构:全文共分五章。第一章,关键部分是概述。第二章,介绍网络应用系统开发技术介绍。第三章,介绍网络聊天系统分析和设计。第四章,介绍网络聊天系统具体设计及实现。第五章,介绍相关测试部分内容。2 网络应用系统开发技术介绍2.1 TCP/IP协议概述 TCP / IP是专为大型网络协议行业定制标准套件。在TCP / IP协议族包含IPv4和IPv6套协议。对TCP / IP标准是发表在一系列文件名为RFC文档。在一个基于TCP / IP网络,路由器能够转发给路由器,一个节点或是主机或路由器。 在一个基于TCP / IP网络,一个子网是被路

9、由器使用相同IP地址前缀一个或多个LAN段,和一个网络是经过路由器连接两个或更多个子网。2.2 用户/服务器模型 用户/服务架构结构简称C/S结构,是一个网络架构,它把用户端 (Client) (通常是一个采取图形用户界面程序)和服务器 (Server) 区分开来。每一个用户端软件实例全部能够向一个服务器或应用程序服务器发出请求。有很多不一样类型服务器,比如文件服务器、游戏服务器等。 C/S经过不一样路径应用于很多不一样类型应用程序,最常见就是现在在因特网上用网页。比如,当你在维基百科阅读文章时,你电脑和网页浏览器就被当做一个用户端,同时,组成维基百科电脑、数据库和应用程序就被当做服务器。当你

10、网页浏览器向维基百科请求一个指定文章时,维基百科服务器从维基百科数据库中找出全部该文章需要信息,结合成一个网页,再发送回你浏览器。2.3 Socket网络编程套接字是通信基石,是支持TCP/IP协议网络通信操作单元。能够将套接字看作不一样主机间进程进行双向通信端点,它组成了单个主机内及整个网络间编程界面。套接字存在于通信域中。通信域是为了处理通常线程经过套接字通信而引进一个抽象概念。套接字经过通常和同一个域中套接字交换数据(数据交换也可能穿越域界限,但这时一定要实施某种解释程序)。套接字能够依据通信性质分类,这种性质对于用户时可见.应用程序通常仅在同一类套接字间通信.不过只要底层通信协议许可,

11、不一样类型套接字间也照样能够通信。进入九十年代后,伴随计算机和网络技术发展,很多数据处理系统全部采取开放系统结构用户机/服务器网络模式,即用户机提出任务请求,经过网络发送给服务器,由服务器做对应处理,实施被请求任务,然后将结果返回给用户机。比如:银行ATM前置机和数据处理主机之间即组成用户机/服务器网络模式;电话银行前置机和银行数据处理机之间也组成这种网络模式结构等。这么,怎样在前置机和数据主机之间进行信息交换,即进程网络通信,就成为实现这种网络模式基础。而TCP/IP套接字技术是解这一问题有力工具。它从提出时就一直发挥着愈来愈关键作用,并已成为UNIX操作系统下TCP/IP网络编程标准;甚至

12、WINDOW、JAVA全部配有它通用接口。有了这个强有力工具,我们能够实现异种机、异种操作系统应用程序间相互连接和通信。套接字是支持TCP/IP协议网络通信基础操作单元。能够将套接字看作不一样主机间进程进行双向通信端点。它组成了在单个主机内及整个网际间编程界面。通常来说,跨机应用进程之间要在网络环境下进行通信,必需要在网络每一端全部要建立一个套接字,两个套接字之间是能够建立连接,也是能够无连接,并经过对套接字“读”、“写”操作实现网络通信功效。类似于UNIX系统中I/O概念,像文件那样有打开、读、写、关闭方法。2.4 开发工具和运行环境 本试验关键开发工具是Eclipse,Eclipse是开放

13、源代码项目,能够在网上无偿下载Eclipse最新版本,通常Eclipse提供多个下载版本:Release,Stable Build,Integration Build和Nightly Build。Eclipse本身是用Java语言编写,但下载压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,而且要在操作系统环境变量中指明JRE中bin路径。2.5 其它技术诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类很多服务器应用程序全部面向处理来自一些远程起源大量短小任务。请求以某种方法抵达服务器,这种方法可能是经过网络协议(比如 HTTP、FTP 或 POP)、经过 JMS 队

14、列或可能经过轮询数据库。不管请求怎样抵达,服务器应用程序中常常出现情况是:单个任务处理时间很短而请求数目却是巨大。构建服务器应用程序一个过于简单模型应该是:每当一个请求抵达就创建一个新线程,然后在新线程中为请求服务。实际上,对于原型开发这种方法工作得很好,但假如试图布署以这种方法运行服务器应用程序,那么这种方法严重不足就很显著。每个请求对应一个线程(thread-per-request)方法不足之一是:为每个请求创建一个新线程开销很大;为每个请求创建新线程服务器在创建和销毁线程上花费时间和消耗系统资源要比花在处理实际用户请求时间和资源更多。除了创建和销毁线程开销之外,活动线程也消耗系统资源。在

15、一个 JVM 里创建太多线程可能会造成系统因为过分消耗内存而用完内存或“切换过分”。为了预防资源不足,服务器应用程序需要部分措施来限制任何给定时刻处理请求数目。线程池为线程生命周期开销问题和资源不足问题提供了处理方案。经过对多个任务重用线程,线程创建开销被分摊到了多个任务上。其好处是,因为在请求抵达时线程已经存在,所以无意中也消除了线程创建所带来延迟。这么,就能够立即为请求服务,使应用程序响应愈加快。而且,经过合适地调整线程池中线程数目,也就是当请求数目超出某个阈值时,就强制其它任何新到请求一直等候,直到取得一个线程来处理为止,从而能够预防资源不足。3 网络聊天系统分析和设计3.1 可行性分析

16、计算机技术快速发展,尤其是计算机网络发展,越来越深刻改变了大家生活方方面面。使得大家能以更低廉价格,开发出更方便、更实用网络工具。多种在线服务系统,更是深刻影响了大家联络和交流方法,使得大家能够自傲远隔千里之遥随时通讯。过去种种陈旧联络方法,已经不能满足现代生活需要。网上聊天系统作为一个方便大家之间联络使用系统便应运而生。网上聊天系统是大家进行交流和联络提供一个平台。经过提供完善网上聊天系统管理,能够达成促进人和人之间交流和沟通。在Internet上,qq,MSN,飞信等网上软件,极大程度方便了各地友人之间联络,也使世界一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就能够给你好友发信

17、息。现在,企业,机关,学校全部纷纷建立起自己局域网。在局域网里,即使能够经过文件共享方法进行通讯吗,但单单使用这种方法,是不方便。首先在局域网里网上邻居,只能看到机器名,不清楚对方是谁,也不知道对方机器有什么资源能够共享,而且当局域网机器很多时,这种方法愈加麻烦。现在有很多局域网内机器不使用服务器通讯软件,这种软件小巧而且轻便,也能处理一部分问题。不过有服务器通讯软件,有着不可比拟优势;能够发送离线信息,不管用户当初是否在线,下线上线时,就能够看到这条信息了;能够保留用户个人信息或介绍,供人查看。而且,不适用服务器通讯软件,是以机器为通讯单元,而有服务器通讯软件是以人为通讯单元。总而言之,有服

18、务器通讯软件在局域网上,还是有很大用途,喂局域网上通讯,带来极大地方便。3.2 需求分析使用JAVA及数据库技术相结合,编写一个聊天系统软件。这个系统提供多个用户立即并发通信平台。未注册用户能够注册成系统会员,已注册用户能够经过登录进入聊天系统。在系统中用户能够选择进入某一个聊天分区去聊天,也能够和特定用户聊天。提供一个在线实时沟通平台。进入系统用户能够选择自己聊天对象。用户没有专业计算机知识,所以需要一个友好简单界面。用户有娱乐需要,所以需要提供娱乐节点。用户经过软件进行沟通,应提供多个方法,如网络视频,音频聊天等。要求可靠性高,能在因为系统问题或其它原因产生错误后,作出相对应处理,比如网络

19、初始化失败、服务器不在线等,能够提醒用户安全退出本程序,在出现不可知错误以后,能够尽可能安全退出程序。在程序设计过程中,要求能尽可能多设想到用户使用过程中可能发生事件,并能在判定事件后做出对应处理,使程序含有较高容错性能。含有宜操作性,程序简单易懂,轻易上手使用。设计界面是,简化界面复杂性,模拟QQ等现有即时通讯工具界面,使用户能很轻易看懂并使用。模块化设计此软件功效,不一样模块实现不一样功效,使得软件易于以后维护和扩展,在以后能够愈加好完善本软件功效,更方便于在工作中应用。3.3 系统总体设计 依据网络应用程序特点,网络在线聊天系统应就有即时,快速特点。服务器端和用户端应就有不一样功效特征。

20、对于服务器端应能够正确地建立和用户端连接并能正确地断开,能即时地接收、处理和发送接收到数据。能立即地通知在线用户目前好友在线情况,能够处理非正常数据能力。对于用户端应能够快速地检验是否能够连接到服务器端。能正确取得和反应该前好友在线情况。能够正确和特定好友交流。能立即地接收到服务器端地数据,并能即时处理数据,并能将处理结果反应给用户。服务器端能够正确地、无冲突地开启服务器。监听指定端口,等候用户连接。建立和用户端逻辑连接,并能通知其它好友。向新进入好友发出已上线好友名单。接收用户端消息请求,并能正确无误地处理消息,并能发出消息到用户端。反应该前在线人数和在线好友谊况。立即地反应发出地消息和聊天

21、消息。当好友断开和服务器端地连接时,服务器能够正确地断开连接,并通知其它用户。当用户违反聊天系统要求时,服务器系统管理员能够断开和此用户连接。当服务器关闭时,应通知全部用户。用户端能够正确开启应用程序,并能向服务器发出连接请求。反应该前好友在线情况。能够向群体或指定好友发出消息能够立即接收好友发出消息,并通知用户。能够正确地断开和服务器端地连接。3.3.1 系统架构模型 系统整体结构图所表示,包含了主界面,注册模块,登陆模块,私聊模块,群聊模块,首先要在注册模块完成注册,然后进入登陆模块登入才能进入主界面,主界面是一个选择能够选择进入私聊模块还是群聊模块。3.3.2 功效模块设计登陆模块,需要

22、完成登陆界面,和登陆会话维持。注册模块,需要完成向数据库插入用户数据然后进行反复性检验。私聊模块,构建两个套接字连接方法,完成单独连接。群聊模块,构建一个广播室,全部套接字发送全部回转发到该广播室内其它套接字当中。3.3.3 系统通信设计用户端关键经过套接字请求发送对方ID给服务器,服务器在数据库当中确定该用户在线就把对应用户地址返回给用户端,这个时候用户端就能够主动去连接对应用户,用户在收到连接请求以后需要确定该请求来自服务器分发任务,经过验证以后就能够去和用户端建立起套接字连接。该过程主体是用户端到服务器请求,需要遵照预先定义好协议进行请求,比如发送指令“get userid a”给服务器

23、,而且带上身份验证,也就是密码加密信息给服务器,服务器进行验证以后就能够在数据库当中查找到对应用户信心而且把a信息返回给用户端,这个时候用户端就能够主动提议和a连接,而不再需要经过服务器确实定了,其中有一个问题就是假如中途因为网络原因断线话,需要重新请求服务器获取用户在线状态,这么就能完成短线重连。当然用户端直接连接并不是完全没有防御,必需对被动连接源进行验证以后才能许可对应套接字进行连接,比如利用私有协议,或自定义加密方法等等,这些手段在端到端上能够起到加密作用。最终聊天内容根据自定义格式,以0xEEFF开头然后紧跟一个时间戳,表示消息发送时间。3.3.4 数据库设计表3.1user结构字段

24、名数据类型长度主键否描述id自动编号是自动编号password文本50否密码profile文本256否介绍time日期/时间否活跃时间表3.2message结构字段名数据类型长度主键否描述id文本是发送者dst文本是接收者time日期/时间是发表时间用户表是一个用户注册表,每有一个用户注册,表中就会添加一项,修改密码则对应是字段更新。另外消息表是一个消息历史统计表,每次发送消息时候全部会更新这个表,首先id是指发送着id,而dst指是接收者id,时间以发送方发出消息时间为准,消息现在只支持文字,不支持其它格式例图片信息。4 网络聊天系统具体设计及实现4.1 服务器端设计和实现服务端关键实现是T

25、CP连接管理,当有一个消息到时候需要转发给对应用户端,这里定义了多个事件,首先是连接,断开,和发送,对于连接事件,确定对应用户在线,对于断开事件则是把对应用户从在线状态列表中去除,对于发送事件,确定发送方和接收方同时在线,则把消息发送到接收方。服务器会对逻辑进行处理。图 4.1 消息状态转换图 4.2 服务器主步骤服务器首先会处理请求,然后用户列表会进行更新,一直保持该列表和在线用户同时,对于需要转发请求,发送给对应接收方,现在设计是一个单点设计,全部请求全部要经过服务器转发才能抵达接收方,最终达成聊天目标。4.1.1 服务器等候连接进程/线程设计图4.3 监听线程处理逻辑首先,服务器开启监听

26、线程,当有消息抵达时候就复制处理线程,然后重新进行监听,从而抵达并发处理请求目标。服务器端(Server)是指在网络编程中被动等候连接程序,服务器端通常实现程序关键逻辑和数据存放等关键功效。服务器端编程步骤和用户端不一样,是由四个步骤实现, 服务器端属于被动等候连接,所以服务器端开启以后,不需要提议连接,而只需要监听当地计算机某个固定端口即可。这个端口就是服务器端开放给用户端端口,服务器端程序运行当地计算机IP地址就是服务器端程序IP地址。取得连接,当用户端连接到服务器端时,服务器端就能够取得一个连接,这个连接包含用户端信息,比如用户端IP地址等等,服务器端和用户端也经过该连接进行数据交换。通

27、常在服务器端编程中,当取得连接时,需要开启专门线程处理该连接,每个连接全部由独立线程实现。交换数据,服务器端经过取得连接进行数据交换。服务器端数据交换步骤是首先接收用户端发送过来数据,然后进行逻辑处理,再把处理以后结果数据发送给用户端。简单来说,就是先接收再发送,这个和用户端数据交换数序不一样。其实,服务器端取得连接和用户端连接是一样,只是数据交换步骤不一样。当然,服务器端数据交换也是能够数次进行。在数据交换完成以后,关闭和用户端连接。这就是服务器端编程模型,只是TCP方法是需要建立连接,对于服务器端压力比较大,而UDP是不需要建立连接,对于服务器端压力比较小罢了。4.1.2 服务器处理用户端

28、信息进程/线程设计我们应该充足利用多核优势,这会是以后发展方向。让每个进程要么处理大流量小计算量工作;要么处理小流量大计算量工作。这么多个进程放在一台物理机器上能够愈加充足利用机器资源。单线程多进程设计,个人认为更能发挥多核优势。这是因为没有了锁,每个线程全部能够以最大吞吐量工作。增加负担只是进程间数据复制,在网游这种复杂逻辑系统中,通常不会比逻辑计算更早成为瓶颈。假如担心,单线程没有利用多核计算优势,不妨考虑以下例子:计算 a/b+c/d+e/f ,假如我们在一个进程中开三条线程利用三个核同时计算 a/b c/d e/f 当然不错,但它增加了程序设计复杂度。而换个思绪,做成三个进程,第一个只

29、算 a/b 把结果交给第二个进程去算 c/d 于之和,再交个第三个进程算 e/f 。对于单次运算来算,即使成本增加了。它需要做额外进程间通讯复制中间结果。但,假如我们有大量连续这么计算要做,整体吞吐量却增加了。因为在算某次 a/b 时候,前一次 c/d 可能在另一个核中并行计算着。4.2 用户端设计和实现4.2.1 登陆模块登陆模块实现过程有下面多个步骤:(1)获取用户名,用户选择头像,服务器IP地址和端口号信息;(2)确定登陆后初始化,创建套接字,连接服务器,向服务器发送用户登陆信息,使其它在线用户得到本用户上线消息;(3)初始化过程中显示在线好友,而且对用户好友上、下线进行管理。4.2.2

30、 主界面模块整个程序是以服务器和用户端之间通信事件而驱动,本程序划分为三大模块,但最基础全部是得到服务器传来消息,对消息进行判别再分别交给不一样模块进行处理。本设计接收消息过程很抽象,笔者在对设计详述之前首先将用户端接收消息过程提纯出来,其示意图图4.1所表示。事先已对套接字和端口进行过绑定,一旦端口有数据来到,就会触发CMainSocket对象CMainSocket:OnReceive()函数。OnReceive()函数中调用Receive()函数就能够得到端口进来以Message结构体封装消息。再将Message内容作为WM_RECEIVEMESSAGEWPARAM参数发送。WM_RECE

31、IVEMESSAGE为自定义消息,CMyQQClientDlgOnReceiveMessage()为此消息对应消息处理函数。OnReceiveMessage()函数处理从wParam参数中传送来以Message结构体封装消息内容,针对不一样消息类型进行不一样处理。在以下每个模块中,会将OnReceiveMessage()函数进行分解,各模块只针对自己部分进行处理。图4.4 接收消息过程管理模块步骤图图4.5所表示。管理模块功效实现最关键由CLoginLoad 、CMyQQClientDlg两个类来实现。在下文介绍具体功效时,会对两个对话框控件进行分析。图4.5 管理模块步骤图CLoginLoa

32、d :CLoginLoad是用户登陆对话框,基于CDialog类。CloginLoad登录对话框界面图4-3所表示。其关键功效是获取用户名、用户选择头像等信息,而且填写服务器IP和端口号。此对话框关键有两个按钮,登陆按钮和退出按钮。用户输入昵称和密码后可按登陆按钮,如不想登陆按退出按钮退出程序。图4.6 CLoginLoad用户登陆界面CMyQQClientDlg:CMyQQClientDlg是用户登陆后显示好友列表对话框,基于CDialog类,CMyQQClientDlg也是本程序最关键对话框。此对话框只响应用户双击图标事件,双击后,创建聊天对话框,然后开始进行聊天。CMyQQClientD

33、lg对话框界面图4.7所表示。图4.7 CMyQQClientDlg好友列表对话框4.2.3 私聊模块发送信息模块聊天模块中,发送信息模块实现过程有下面多个步骤:(1)用户选择一个好友为聊天对象;(2)识别是否已经和此好友处于聊天状态(有对应聊天对话框打开),已处于聊天状态,将该对话框显示到前台,未处于聊天状态,创建一个新对话框;(3)用户按下发送按钮后,将聊天内容发送出去(服务器接收);(4)在当地即时聊天内容显示编辑框中添加发送内容。2. 接收信息模块聊天模块中,接收信息模块实现过程有下面多个步骤:(1)判定接收到信息类型,是否为好友发来信息;(2)若该好友第一次发送信息(没有和此好友聊天

34、对话框),提醒用户有新消息;(3)用户按下查看消息提醒后,创建新对话框,加到对话框链表中并显示该对话框,假如已经和此好友处于聊天状态,直接将对应对话框调到前台;(4)在对应对话框中显示传输过来消息。图4.8 CchatDialog用户聊天对话框聊天模块关键由CChatDialog、CChatAction两个类来实现。CChatDialog:CChatDialog是和好友进行聊天对话框,基于CDialog类。CChatDialog共有两个Button控件和两个RichEdit控件。第一个RichEdit用于显示聊天统计,即双方对话内容,第二个RichEdit用于用户输入消息。发送按钮响应用户发送

35、请求,即用户在输入消息后按下按钮,程序立即RichEdit内容发送给服务器。查看聊天统计是用于响应用户查看聊天统计请求。此部分内容在聊天统计管理模块中详述。CChatDialog界面图4.8所表示。CChatAction:CChatAction是用于提醒用户有新消息提醒对话框,基于CDialog类。CChatAction有一个Static Text控件和一个Button按钮。Static Text静态文本框用于显示“您有一条新消息,请注意查收”提醒信息。Butoon用于响应用户查看新消息事件。CChatAction界面图4.9所表示。图4.9 CChatAction对话框基于CSocket类C

36、MainSocket类中,定义了类型为 CObArray m_ChatDlgs组员变量,m_ChatDlgs对全部创建好聊天对话框进行了管理。是本论文设计聊天程序中应用到关键技术。聊天事件产生有两种可能性,一是用户本身主动向好友发出聊天请求,二是好友向用户发出聊天请求,用户接收请求。两种事件中,不管是哪种形式,只要聊天事件开始,程序就为用户创建一个新类型为CChatDialog聊天对话框,对话框以m_ClientName和m_UserName为标识(因为聊天事件是两方之间对话,只要双方全部确定下来了,就能确定此聊天事件)。再将新建聊天对话框加入到链表中。对于信息传送,聊天统计查看等过程中,全部

37、需要对m_ChatDlgs链表进行操作。m_ChatDlgs和CChatDialog关系图4.10所表示。在CMainSocket类中,改写了CSocketOnReceive()函数,一旦有消息进入端口,就会触发OnReceive()函数,在OnReceive()内部调用Receive()函数,就得到了信息内容。以后能够对消息进行一系列处理。本设计中自定义了WM_RECEIVEMESSAGE消息,作为端口得到消息提醒,用SendMessage()将WM_RECEIVEMESSAGE消息发送出,并在程序中添加对应得消息响应函数,来处理端口得到消息。消息伴随WM_RECEIVEMESSAGEWPA

38、RAM流动。图4.10 m_ChatDlgs和CChatDialog关系发送信息关键步骤图4.11所表示。图4.11 发送信息步骤图4.2.4 聊天统计管理模块聊天统计管理模块实现过程有下面多个步骤:(1)用户请求查看聊天统计,向服务器发送请求;(2)服务器向用户发送对应聊天统计,用户端接收信息,识别发送信息为聊天统计;(3)显示聊天统计;(4)假如用户按下保留聊天统计按钮,则保留聊天统计。用户在进行聊天过程中,可能会按下“查看聊天统计”按钮,聊天只关系到用户双方,默认为用户想查看聊天统计为自己和正在对话另一方内容。所以服务器端在进行数据库查找时,也是以聊天双方姓名匹配为查找条件。聊天统计管理

39、模块步骤图图4.12所表示。图4.12 聊天统计管理模块聊天统计管理模块中最关键包含到一个类CReadSession,该类是用于用户请求查看聊天统计后,用于显示聊天统计对话框。该对话框基于CDialog类。关键有一个Button控件,用于保留聊天统计。该对话框图4-12所表示。图4.13 聊天统计对话框5 测试5.1 软件测试概述 软件测试是这么一个过程,它实施一个程序或一个系统,目标是发觉错误。或,它包含这么部分活动,只要这些活动是评价一个程序(或系统)属性和能力、以决定程序或系统是否满足了要求。软件和物理加工不一样,物理加工接收了输入,就产生输出。软件不一样地方在于它失效方法不一样。绝大部

40、分物理系统以固定(通常比较少)方法失效。然而,软件却有多个奇异失效方法。检测全部失效模式,通常是行不通。和大多数物理系统不一样,软件中大部分缺点是设计错误,不是制造上缺点。软件不会用坏,也不会磨损通常地说,若不升级和退市,它就不会改变。所以,软件一旦公布了,设计上缺点或叫bug就会埋入到软件之中并一直留在那里,直到有一天它会被触发而发作。在一个中等大小软件模块里,软件bugs几乎总是存在。这不是因为程序员粗心和不负责任,而是因为软件复杂性通常是不可处理,人管理复杂性能力是有限。还有一点,对应复杂系统,设计缺点是不可能根除。一样因为复杂性,发觉软件中设计缺点也是很困难。因为软件和任何数字系统不是

41、连续,测试边界值对确保其正确性是不够。全部可能值全部需要测试和验证,不过完全测试是不可行。对于一个简单不过小程序,两个32位整数相加,会有264次方个测试用例,即使每秒钟测试几千个用例,完全测试这个小程序也需要几百年。很显然,对于一个实际软件模块,其复杂性远远超出刚才举那个例子。假如输入来自真实世界,问题将变得愈加糟糕,因为时间和不可估计环境原因,和人交互,全部有可能被考虑成为输入参数。程序动态性使问题愈加复杂。假如在初步测试中发觉了一个失效,给代码做了修改,软件可能现在经过了一个原来不能经过测试用例。不过原来经过测试用例现在不能再确保经过了。考虑到这种可能性,测试应该重新开始。可测试费用成本

42、可是有限制。 5.2 测试策略和结果分析针对本软件项目制订测试计划。1.登陆功效输入条件编号有效等价类编号无效等价类输入昵称1杨颖or许野or王元杰4NULL输入服务器IP2127.0.0.1 or 服务器主机IP地址5NULL6非127.0.0.1 and 非服务器主机IP地址点击确定按钮按钮3单击确定按钮7未单击确定按钮8单机取消按钮测试用例用例编号用例预期输出覆盖等价类输入结果1昵称:杨颖服务器IP:127.0.0.1单击确定按钮登陆成功跳转至主界面1,2,3输入昵称:杨颖输入服务器IP:127.0.0.1单击确定按钮正确2昵称:服务器IP:127.0.0.1单击确定按钮提醒连接服务器失

43、败,再试一次?4输入昵称:输入服务器IP:127.0.0.1单击确定按钮不正确3昵称:杨颖服务器IP:单击确定按钮提醒连接服务器失败,再试一次?5输入昵称:杨颖输入服务器IP:单击确定按钮不正确4昵称:杨颖服务器IP:128.0.0.1单击确定按钮提醒连接服务器失败,再试一次?6输入昵称:杨颖输入服务器IP:128.0.0.1单击确定按钮不正确5昵称:杨颖服务器IP:127.0.0.17输入昵称:杨颖输入服务器IP:127.0.0.1不正确6昵称:服务器IP:127.0.0.1单击取消按钮回到上一界面8输入昵称:杨颖输入服务器IP:127.0.0.1单击取消按钮不正确2.选择聊天方法输入条件编

44、号有效等价类编号无效等价类选择聊天方法1选择私聊3无操作2选择群聊测试用例用例编号用例预期输出覆盖等价类输入结果1选择私聊选择成功跳转至私聊界面1单击私聊按钮正确2选择群聊选择成功跳转至群聊界面2单击群聊按钮正确3无操作依旧停留在主界面3无不正确3.选择聊天对象输入条件编号有效等价类编号无效等价类选择聊天 对象1选择用户3无操作2直接在输入框打字测试用例用例编号用例预期输出覆盖等价类输入结果1选择某一用户用户选择成功跳转至该用户私聊界面1双击击对应用户正确2在输入框打字信息显示在公屏上2双击对应群正确3无操作依旧停留在上一界面3无不正确4.开始聊天输入条件编号有效等价类编号无效等价类输入信息1输入对应信息或文字3未输入任何东西发送按钮2点击发送按钮4未按下发送按钮测试用例用例编号用例预期输出覆盖等价类输入结果1信息:123单击按钮信息123发送至对方1,2,输入信息:123单击按钮正确2信息:123未单击按钮发送失败4输入信息:123未单击按钮不正确3信息:空单击按钮发送失败3输入信息:空单击按钮不正确4信息:空未单击按钮发送失败3,4输入信息:空未单击按钮不正确5.退出

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服