基于J2SE的QQ聊天系统的设计本科毕业论文.doc_第1页
基于J2SE的QQ聊天系统的设计本科毕业论文.doc_第2页
基于J2SE的QQ聊天系统的设计本科毕业论文.doc_第3页
基于J2SE的QQ聊天系统的设计本科毕业论文.doc_第4页
基于J2SE的QQ聊天系统的设计本科毕业论文.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

本科毕业论文 题目:基于 j2se 的 qq 聊天系统 毕业论文 基于 j2se 的 qq 聊天系统 摘 要 java 编程语言是目前世界上最流行的计算机编程语言之一,拥 有面向对象,分布式,性能优异,多线程等特性。越来越多的企业, 因为使用了 java 而提高了生产效率。绝大多数 it 企业都选择用 java 来进行软件开发,如此众多的企业青睐,使 java 在所有语言中 的排名中名列前茅。本课题主要研究的是利用 j2se 编程语言的多线 程技术和 socket 的优越性,将软件中的视图、业务逻辑互相分离, 设计与实现局域网聊天软件,此系统分为服务器和客户端,服务器提 供转发信息及广播系统消息功能,而客户端主要实现私聊和群聊功能, 同时能利用线程同步完成文件的传送。 关键词: j2se,socket 通信,多线程,qq 聊天系统 毕业论文 design and implementation of the qq chatting system based on j2se abstract the java programming language is one of the worlds most popular computer programming language, object-oriented, distributed, high-performance, multi-threaded. more and more enterprises, because of the use of java and improve production efficiency. the vast majority of it companies have chosen to use java software development, so many companies favor, the java ranked among the best in all languages. the main subject of the study is the use of the j2se programming language multi-threading technology and socket superiority separated from each other, views, business logic software, design and implementation of lan chat software, this system is divided into server and client, the server provides forwarding information and broadcasting system messages, the client achieve private chat and group chat feature, while thread synchronization completed document delivery. key words:j2se, socket communication, multi-threaded, qq chat system 毕业论文 目 录 摘 要 iii 关键词 .iii abstract.iii key wordsiii 第一章 前言 1 1.1 系统背景 1 1.2 系统开发的目的和意义 1 1.3 对现阶段聊天软件的分析 1 1.4 本系统优势及开发方案 1 第二章 关键技术概述 3 2.1 java语言概述 3 2.2 java swing简介 .3 第三章 系统分析 4 3.1 需求分析 4 3.2 功能分析 4 3.2.1 用户注册和登录 4 3.2.2 聊天功能分析 5 3.2.3 发送接收文件 6 3.2.4 查看聊天记录 6 3.2.5 启动、停止服务 6 3.2.6 查看好友资料 7 3.3 系统开发环境 7 第四章 系统概要设计 9 4.1 系统用例图 9 毕业论文 4.1.1 客户端用户用例图 9 4.1.2 服务器端管理员用例图 9 4.2 系统功能模块设计 9 4.2.1 系统功能模块图 .10 第五章 系统详细设计 .11 5.1 服务器设计思想 .11 5.2 服务器端界面 .11 5.2.1 服务器端各主要类的定义及其功能 .11 5.2.2 服务器端管理功能设计 .12 5.2.3 服务器端显示消息的功能设计 .12 5.3 客户端设计思想 .12 5.4 客户端界面 .13 5.4.1 客户端类的定义以及功能实现 .13 5.4.2 客户端发送消息的设计 .13 5.4.3 客户端显示收到消息的设计 .14 5.4.4 客户端发送接收文件的设计 .14 5.4.5 查看好友和个人资料设计 .14 第六章 系统具体实现 .15 6.1 登陆系统的实现 .15 6.2 服务器端模块功能实现 .15 6.3 显示在线用户 .16 6.4 公聊和私聊功能代码实现 .16 6.5 客户端模块功能实现 .16 6.6 客户端接收发送消息功能代码 .18 6.7 用户发送接收文件功能代码 .19 第七章 系统功能测试 .21 7.1 软件测试技术 .21 7.2 测试用户注册登录 .21 7.3 测试用户聊天记录 .21 7.4 测试聊天及其文件传送 .22 7.5 测试启动停止服务器服务 .22 第八章 结论 .23 致谢 24 毕业论文 参考文献 25 毕业论文 vi 第一章 前言 1.1 系统背景 qq 聊天软件,是一种聊天工具,使用者通过安装软件可以进行 多人之间的即时沟通。它除了能加强网络之间的信息沟通外,最主要 的是可以将网站信息与聊天用户紧密联系在一起。qq 聊天软件不但 成为人们的沟通工具,还成为了人们利用其进行电子商务、工作、学 习等交流的平台,不仅比传统沟通方式更节省办公费用,而且还使工 作更有效率。 1.2 系统开发的目的和意义 由于互联网发展迅速,人们的工作和生活也越来越离不开信息网 络的支持, 而聊天室是人们最常见, 最直接的网上交流的方式。本 设计的主要目的是为了满足人们通讯交流的便捷,实现灵活、全面的 音、视频信息的传递和服务。课题的主要任务是设计在局域网里进行 聊天的应用软件。 本系统开发采用 c/s(client/server)模式,通过客户机与服务 器结构,在 myeclipse 开发环境下,使用 java 编程语言进行本软件 的开发。本文将设计与实现基于 java 多线程和 socket 技术的 qq 聊 天系统。 1.3 对现阶段聊天软件的分析 msn messenger、qq、skype、网易泡泡(popo)、icq(“i seek you”)等是现在网络上比较流行的几款在线聊天软件,它们都具备在 internet 上聊天、发送消息和文件传送等功能。 通过对几种流行的在线聊天软件介绍,我们可以总结出:这几种 聊天软件在常用功能上基本差不多,包括:文字、语音、视频、收发 毕业论文 vii 文件等;做为普通网民安装一种就可以了。由于这几种聊天工具之间 是不可以相互连接、相互对话,为了满足各路网络游侠的爱好和习惯, 因此才会使用多种聊天工具,这就是在线聊天软件所存在的缺陷。 1.4 本系统优势及开发方案 传统的局域网聊天软件,大部分显示层和业务逻辑层混杂在一起, 对于系统的使用和维护管理非常困难;并且,不管是哪种在线聊天软 件,它们最大的缺陷就是服务器固定的,用户必须连接上指定的服务 器才能进行聊天等操作。本系统基于 java 编程语言开发,通过将业 务逻辑层、显示层分离,为系统开发提供了可扩展性和易维护性。并 解决了上述的各种难题。 本课题设计方案包括:系统需求分析,系统总体设计、业务流程 设计,服务器端和客户端设计,系统测试。本系统基于 c/s 架构设计, 采用 j2se 语言开发。将显示层和业务逻辑层分层设计,两层各司其 职,只需更改需求变化的层中的业务逻辑代码而不会影响到其它层中 的代码;本系统选择自定义文件类型存储用户聊天日志以及服务器操 作日志,确保聊天记录安全性,这样可大大增强了系统的健壮性和可 维护性以及可移植性。 毕业论文 1 第二章 关键技术概述 2.1 java 语言概述 java 是一种电脑编程语言,拥有跨平台、面向对象、泛型编程 的特性。java 是由 sun 微系统公司所发展出来的程序语言,它本身 是一种对象导向(object-oriented)的程序语言。 2.2 java swing 简介 swing 是一个用于开发 java 应用程序用户界面的开发工具包。 它以抽象窗口工具包(awt)为基础使跨平台应用程序可以使用任何可 插拔的外观风格。swing 开发人员只用很少的代码就可以利用 swing 丰富、灵活的功能和模块化组件来创建优雅的用户界面。 swing 是一个标准的 mvc 结构。 componentui 代表 view, 负责 描画组件。 组件尤其 model 层,比如 jtextfield 的 document,jtable 的 tablemodel,jtree 的 treemodel 等等。 而 control 可能不是很明显, 我们或许可以简单的将其 event 机制看 作一个 swing 团队开发给开发者的 controller。 毕业论文 2 第三章 系统分析 系统需求分析是整个开发过程的第一个阶段,也是最重要的一步。 为了确定本系统的业务流程和每个功能点具体的功能实现,通过分析, 我为开发系统制定了以下合理的方案和需求分析: 3.1 需求分析 聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两 个方面所要完成的任务,对设计这个程序来说,等于完成了一半。首 先来看一下服务器端的任务: 1. 服务器端应当建立一个 serversocket,并且不断进行侦听是 否有客户端连接或者断开连接(包括判断没有响应的连接超时)。 2. 服务器端应当是一个信息发送中心,所有客户端的信息都传 到服务器端,由服务器端根据要求分发信息。 以上就是服务器端最主要的两个任务。不难看出,服务器端的任 务并不复杂。 客户端应该完成的工作包括: 1. 与服务器端建立通信通道,向服务器端发送信息。 2. 接收来自服务器的信息。 相对服务器而言,客户端的任务更加简单,有了以上的简单分析, 可以知道,解决上述四个问题,即完成了该聊天系统的核心。 3.2 功能分析 首先是确定本系统的主要功能类别,及其子功能模块。通过分析, 本系统要实现的功能如下:用户注册、登录;查找好友;私聊、群聊; 查看个人资料查看好友资料;文件传送;查看聊天记录。 毕业论文 3 3.2.1 用户注册和登录 1.注册 服务器收到用户的注册请求,便开始接受客户传递的信息,诸如 用户的账号(必须为 6-10 个字符) ,昵称,性别,籍贯,个人资料等, 接受完毕后,便通过 jdbc 与后台 mysql 数据库连接,然后向数据库 添加记录。客户端收到服务器返回的信息后,便显示主登陆窗口。 2.登陆 在客户端,用户输入其号码和密码,然后建立与服务器的连接, 告诉服务器登录信息,服务器收到后,开始通过 jdbc 读取数据库, 然后与用户输入的信息比较,如果成功,便打开主程序窗口。然后客 户端向服务器请求读取好友名单,服务器收到该请求,开始读取数据 库中的表,得到好友的号码后,再在数据表中读取好友资料,然后向 客户端发送这些信息,客户收到后就在主窗口显示好友,并且建立几 个矢量(vector)用以存储好友的昵称,号码。 图 3.1 客户端用户登录流程 3.2.2 聊天功能分析 1.私聊 私聊就是两个聊天。客户端首先发送消息到服务器端,服务器端 登陆 流程结束 客户端主窗体 错误提醒 服务器 监听 登陆验证 发送请求 有连接请求 登陆 成功 没有 响应 连接 失败 注 册 毕业论文 4 根据发送人信息和接收者信息来转发。例如服务器接收到一个 a 发给 b 的消息,先判断 b 是否已经在线,如果在线就将信息发送过去。b 接收到 a 发来的信息,如果是未建立对话窗口,就询问是否建立对话, 否则就丢弃信息。 2.群聊 群聊,就是多人一起聊天。过程与私聊差不多。唯一的不同就是 服务器会将信息转发给指定群的所有成员。 业务流程: 编辑消息内容 接收消息 读取聊天记录 显示聊天记录显示消息发送消息 结束操作 图 3.2 客户端聊天流程图 3.2.3 发送接收文件 功能描述:发送文件给指定用户,用户接收文件,保存在指定目 录。 业务流程: 毕业论文 5 选择用户 选择文件 发送文件监听 接收文件监听 接收文件 接收文件结束 中断接收 中断发送文件 取消 取消 发送 接收 图 3.3 客户端维护聊天记录流程 3.2.4 查看聊天记录 功能描述:显示聊天历史记录,清除聊天历史记录,将聊天记录 导出文件。 业务流程: 清除聊天记录 导出聊天记录 读取聊天记录 清除聊天记录 清除聊天记录 结束操作 显示文件信息 返回错误 文件是否存在 y n 图 3.4 客户端维护聊天记录流程 3.2.5 启动、停止服务 功能描述:自动设置服务器端套接字,启动服务后监听客户端的 请求,同时显示连接状态和接收请求的信息。向客户端发送消息,关 闭服务器端的套接字,断开与客户端的连接,显示服务器状态。 业务流程: 毕业论文 6 启动服务 监听客户端 显示请求内容 结束 接收请求 无请求 图 3.5 服务器端启动服务流程 停止服务 向客户端发送 消息 断开与客户端 连接 结束操作 图 3.6 服务器端停止服务流程 3.2.6 查看好友资料 用户登录以后,想在客户端得到好友的资料并显示在聊天主界面 上,可以把好友的账号发送到服务器进行数据库连接从而得到该用户 的信息,并发送到客户端进行显示。 登录系统 点击好友图标 选择好友资料 显示好友资料 信息 图 3.7 查看好友资料 毕业论文 7 3.3 系统开发环境 myeclipse 是一个十分优秀的用于开发 java、j2ee 的 eclipse 插件集合,myeclipse 的功能非常强大,支持也十分广泛,尤其是对 各种开源产品的支持十分不错。myeclipse 目前支持 java servlet,ajax, jsp, jsf, struts,spring, hibernate,ejb3,jdbc 数据库链接工具等多项功能。可以说 myeclipse 几乎囊括了目前所有 主流开源产品的专属 eclipse 开发工具。本系统开发平台将选用 myeclipse 进行编码实现。 毕业论文 8 第四章 系统概要设计 4.1 系统用例图 4.1.1 客户端用户用例图 注册 用户 登录 私聊 群聊 修改个人信息 查找添加好友 查看好友信息 文件传输 图 4.1 客户端用户用例图 4.1.2 服务器端管理员用例图 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 关 图 4.2 服务器端用例图 4.2 系统功能模块设计 本系统设计包括概要设计和详细设计,概要设计的主要任务是概 毕业论文 9 要地设计软件的整体结构,也就是要确定系统每个功能是由哪些模块 组成,以及这些模块的相互关系。详细设计包括业务对象模型设计、 功能逻辑设计和界面设计等工作,详细设计是系统实现的依据,需要 认真的考虑所有的细节。详细设计的根本目标是确定系统功能模块的 具体设计方案,并得出对系统的精确描述,从逻辑上实现系统每个模 块的功能,设计出简明易懂的处理过程,为编码实现奠定基础。 本系统涉及到一个服务器端和 n 个客户端。客户向服务器发送请 求,服务器对请求作出响应。客户尝试与服务器建立连接。一旦连接 建立起来,客户和服务器就可以通过套节字进行通信。 本系统主要分为两个功能模块:服务器端功能模块和客户端功能 模块。此外还增加了登陆功能和文件传送功能。 聊天系统 服务器 客户端 文件传送 截图 图 4.3 系统全局功能模块图 4.2.1 系统功能模块图 服务器 开始监听 广播系统消 息 保存聊天日 志 显示在线用 户 关闭监听 显示系统配 置 退出系统 图 4.4 服务器端功能模块图 客户端 登陆/退出 密码找回 公聊/私聊 个人及好友资 料操作 文件传送 显示好友 退出系统 图 4.5 客户端功能模块图 毕业论文 10 第五章 系统详细设计 由于服务器端是整个系统的核心,它包含了监听客户端请求、转 发客户端消息和控制服务的开启和关闭等功能。 5.1 服务器设计思想 设计服务器,应考虑以下问题: 安全性:服务器的安全性包括两部分,一是服务器端软硬件配置 上的安全性,比如防止系统漏洞;二是服务器和客户端通讯协议的安 全性设计,防止通过协议本身导致服务器被非法攻击等。 服务器在监听到一个客户以后,它就会创建一个线程去管理这个 用户。至于如何去管理这个用户,服务器端不做任何干涉,完全由监 听线程决定。监听线程主要对客户端的请求进行响应,做到有求必应。 接收到信息后,首先判断该信息是哪种类型,如果是要访问数据库服 务器,则直接根据发送信息内容操作数据库。如果是聊天内容,服务 器会将该信息再次转发到目的地。这些判断将会全放部在一个线程的 run 方法中。 5.2 服务器端界面 图 5.1 启动服务器主界面 毕业论文 11 5.2.1 服务器端各主要类的定义及其功能 serverstart:这个类是服务器端程序运行的入口, eventqueue.invokelater()是 swing 程序启动的标准做法,swing 代 码放入实现了 runnable 接口的类的 run 方法中,然后创建一个该类 的对象并将其传入静态的 invokelater 或 invokeandwait 方法。 setscreencenterutil:所有调用该类的 setscreencenter()方 法,将窗体居中显示,调用 setscreenright 方法,将居右显示。 5.2.2 服务器端管理功能设计 服务器端的主要任务是客户端之间相互通信交流,即对客户端进 行管理功能的实现很重要的。 关键代码: override public void dealwithmessage(flag flag, string message,tcp tcp) switch(flag) case login:dologin(message,tcp);break;/如果是 登录 case get_friend_info:dogetfriendinfo(message,tcp);break;/处理用 户发来的请求好友资料的事件 5.2.3 服务器端显示消息的功能设计 服务器端作为客户端消息的中转站和系统消息发出站,对消息的 处理也是比较重要的一个功能,如果服务器端失去了消息发送消息的 功能,聊天室就不需要服务器端了。 毕业论文 12 5.3 客户端设计思想 在客户端的设计中,应当加入客户端登陆界面、主界面、接收发 送信息以及发送接收文件功能的多线程,由于本系统是为了满足局域 网内交流的实现,并且服务器要求并不固定,达到要求的任何终端都 可以做为服务器,客户端的功能要求复杂了一些,除了要实现基本的 交流功能外,还应该实现文件传送、截图功能以及对于系统消息和个 人聊天记录的保存。 5.4 客户端界面 图 5.2 客户端用户聊天主界面 5.4.1 客户端类的定义以及功能实现 clientstart:客户端的启动的 main 方法就在这个类中。将图像 界面和业务逻辑分层处理。 loginframe:link()方法是用于用户登录,填写昵称、选择性别 后可以进行登陆操作。此外实现了监听事件,当服务器未开启时,利 用 joptionpane 的 showmessagedialog 方法提示登陆错误信息;客户 毕业论文 13 端的登陆界面的初始化写在 initcomponents()方法中,主界面初始 化在 chatmainframe 构造方法中,其组成与服务器端界面类似, swing 组件通过与服务器端的监听器相连。 5.4.2 客户端发送消息的设计 用户发送消息由 actionlistener 监听器监听,具体功能是由 actionperformed 方法来监听的。该方法首先获得要监听的对象是接 收、发送文件还是私聊、公聊。如果是私聊,当选中 checkbox 后, 则加上 privatetrue 字符串。然后把提示信息、聊天的对象、聊天方 式和聊天内容依次通过输出流发送给服务器端,服务器端会根据接收 到的内容作相应的转发处理。 关键代码: public cs_tcp(string serverip, int serverport) throws exception super(serverip, serverport); override public void dealwithmessage(flag flag, string message) system.out.println(“测试“+flag.tostring() +“,“+message); switch(flag) case login:dologin(message);break;/如果是登录 case register:doregister(message);break;/如果 是注册 毕业论文 14 5.4.3 客户端显示收到消息的设计 在接收消息模块中定义了一个 while 循环,只要用户没有下线或 与服务器的连接没有中断,则消息一直处于等待接收状态。当输入流 读取到服务器发送的消息后用 if 条件语句判断是何种类型的信息, 并对其做加上相应的类型提示信息的处理。最后在主界面的消息面板 进行显示。 关键代码: 5.4.4 客户端发送接收文件的设计 在 chatmainframe 类的按钮监听方法中,如果监听的资源为 sendfile 按钮时。单击发送按钮的时候,发送文件线程类将用户发 送的文件以及接收文件的用户信息转交给 sendfilethread 这个类处 理;它继承了 thread 线程类,在其 run 方法中,outputstream 将文 件转化为字节流通过 socket 传送到服务器。由服务器转发给指定的 用户接收文件。 5.4.5 查看好友和个人资料设计 在 searchuserinfoaction 类中,通过判断 searchtype 判断是查 看好友资料还是个人资料。查看个人资料则类型为 0,好友资料则为 1。然后查找用户表,将查询的信息显示在用户界面。 毕业论文 15 第六章 系统具体实现 6.1 登陆系统的实现 在登陆时,用户需要输入用户名和密码,服务器接收数据后进行 验证,如果正确,则可以登录。本界面主要负责将用户的信息包装成 一个 users 对象。注册按钮一旦被点击,就会试图创建一个与服务器 端的连接。连接创建成功就会将填写的信息发送到服务器端。如果服 务器写入数据库成功,使用这个账号,用户可以登陆到系统中。 图 6.1 登陆界面 关键代码: / 点击登录时 public void link() throws exception / 连接服务器 hostname = hosttext.gettext().trim(); port = integer.parseint(porttext.gettext(); client = new socket(); inetsocketaddress address = new inetsocketaddress(hostname, port); client.connect(address, 8000);/ 设置八秒后登陆超 毕业论文 16 时 6.2 服务器端模块功能实现 实现服务器 swing 界面的类是 servermanageframe,作为聊天室 系统的服务器,包含了客户端接入以及处理其发出请求的一系列方法, 是整个系统的核心,客户发送的信息就是通过服务器转发给其他用户 的。服务器端也可以广播系统信息。 图 6.2 服务器主界面设计 6.3 显示在线用户 当有用户登录系统时,将在线人数显示在服务器,具体实现关 键代码如下: serversocket = new serversocket(port); inetaddress addr = inetaddress.getlocalhost(); servermanageframe.ip.settext(addr.gethostaddress().tostring() ; 毕业论文 17 servermanagef.settext(addr.gethostname(); servermanageframe.port.settext(serversocket.getlocalport() + “); serversocket.setreceivebuffersize(50); servermanageframe.maxnum.settext(50 + “人“); int count = servermanageframe.userlist.getmodel().getsize(); servermanageframe.usernum.settext(count + “人“); 6.4 公聊和私聊功能代码实现 客户端发送消息到服务器,如果是私聊,则加上字符串 privatetrue;反之,加上字符串 privatefalse。这样让服务器很容 易的区分公聊、私聊操作。 if (privatetalkflag) outmsg = “withwho“ + “ insert(mymsgarea, “您对“ + withwho + “说: “+ mywords); 6.5 客户端模块功能实现 用户登录系统后,将进入聊天系统主界面。整个界面布局采用 window 风格,客户端聊天的主功能界面,用户登陆后可以实现发送 公聊信息、发送私聊信息、接受服务器发送的系统信息;在线用户相 互之间可以发送接收对方传来的文件,并且可以个人聊天记录。 主界面是系统的核心部分。它可以列出所有好友和客户所有加入 毕业论文 18 的群,也可以提供文件传输功能。如果用户服务双击好友分组或群, 好友列表或群成员列表将会显示出来。双击一个好友,可以与他进行 私聊。双击一个群成员,可以与群里的所有成员对话。本界面还提供 了以下右键菜单:添加好友分组、查找好友并加为好友、查找群并加 为群、创建群、移动好友到其它分组、查看好友资料、查看群资料。 关键代码如下: try / 使用 windows 的界面风格 uimanager.setlookandfeel(“com.sun.java.swing.plaf.windo ws.windowslookandfeel“); catch (exception e) e.printstacktrace(); 客户端主界面如下图所示: 图 6.3 客户端主界面设计 毕业论文 19 图 6.4 客户端聊天主界面设计 6.6 客户端接收发送消息功能代码 如果是群聊,则调用 chatserverthread 中的 sendmessagetoall 发送到每一个客户端。期间会服务器获取所有用户,将信息发送给每 一个在线的用户。如果是私聊,服务器会根据用户名查找是哪个用户, 再调用 sendmessagetoone 方法将消息发送到指定客户端。 图 6.5 消息提示框 mywords = inmsgfield.gettext(); / 不能发送空消息也不能都发空格 毕业论文 20 if (mywords.trim().length() != 0) if (withwho.equals(“所有人“) insert(mymsgarea, myname + “:“ + mywords); else / 对某个人交谈 outmsg = “withwho“ + “ if (privatetalkflag) outmsg = “withwho“ + “ insert(mymsgarea, “您对“ + withwho + “说: “+ mywords); else insert(mymsgarea, myname + “ 对“ + withwho + “说: “ + mywords); 6.7 用户发送接收文件功能代码 使用文件传输的客户端要正确配置好服务器的 ip 和端口号,以 及下载好的文件的存放目录。如果其中之一配置不好,文件下载将会 失败。设置好以后,点击保存按钮,如果配置正确,这时将会看到下 载的文件。当看到一个文件以后,可以双击该文件夹并查看文件夹里 面的文件。 毕业论文 21 图 6.6 文件传输界面 用户在界面双击要发送到的联系人,勾选“私聊”选框后,把要 发送的文件拖拽到“欲发送的文件”区域,点击“发送文件”按钮即 可。若开始或中途想放弃传送则可单击“取消发送”按钮。用户点击 发送后,在悄悄话区域会告知接收者发来文件,若接收者接收则单击 “接收文件”按钮,然后设定本地保存位置;若不接收则点击“拒绝 接收”按钮。通过 java 多线程,将文件接收放在线程中处理。 图 6.7 是否接收文件大小的友好提示 关键代码如下: 接收文件线程处理类:acceptfilethread netin = 毕业论文 22 chatmainframe.acceptfilesocket.getinputstream(); in = new datainputstream(new bufferedinputstream(netin); byte buf = new byte8000000; / 创建网络服务器接受客户请求 chatmainframe.fileserver = new serversocket(chatmainframe.port); / 创建网络输出流并提供数据包装器 try netout = chatmainframe.sendfilesocket.getoutputstream(); doc=new dataoutputstream(new bufferedoutputstream(netout); catch (ioexception e1) system.out.print(“发送文件创建网络输出流并提供 数据包装器异常“); 毕业论文 23 第七章 系统功能测试 7.1 软件测试技术 软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软 件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的 活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题 与用户需求、预先定义的不一致性。 软件测试技术-软件测试的分类: 1、从是否需要执行被测试软件的角度分类(静态测试和动态测 试) 。 2、从测试是否针对软件结构与算法的角度分类(白盒测试和黑 盒测试) 。 3、从测试的不同阶段分类(单元测试、集成测试、系统测试、 验收测试) 。 本设计抽取其中部分功能进行测试操作。 7.2 测试用户注册登录 测试名称:用户登录 客户端功能:用户输入昵称、性别、服务器 ip 和端口,与服务 器建立连接,连接成功后登录服务器,显示客户端主界面。 测试流程:用户注册,填写昵称、性别、等个人信息。 用户请求登录。 客户端检查用户填写的内容是否合法,如果未通过检查,则提示 用户正确输入。 客户端程序向服务器发送连接请求,如果出现连接超时,则提示 毕业论文 24 用户连接失败。 服务器接收请求,连接成功。 服务器验证用户名和性别,在列表显示性别和用户。 验证通过,显示客户端程序主窗体。 测试结果:按照上述测试流程,达到预期结果。 7.3 测试用户聊天记录 测试名称:用户聊天记录查看 客户端功能:查看用户的聊天记录。 测试流程:用户登录后,可以查看用户的聊天记录。 用户请求查看聊天记录。 测试结果:按照上述条件,正常完成操作 。 7.4 测试聊天及其文件传送 测试名称:聊天功能测试及文件传送测试。 客户端用户通过发送聊天信息,服务器根据条件转发信息给指定 用户。客户端用户向指定用户发送文件。 测试流程:用户请求与某个在线用户聊天。 用户向服务器发送消息。 聊天信息发送至服务器。如果发送失败,提示发送失败。 服务器接收用户发送的信息,转发给指定的用户。 用户向指定用户发送文件。 服务器接收请求后,获取文件路径,转发给指定用户。 该用户接收文件,保存指定位置。 文件保存成功。 取消接收文件。 毕业论文 25 提示文件被拒绝接收。 测试结果:聊天双方可以正常通信。 服务器关闭后,提示服务器关闭。测试功能正常。 传送文件中断后,提示文件已经中断接收。文件发送成功后,成 功保存文件,打开保存的文件,文件内容完好。 文件传送正常。 7.5 测试启动停止服务器服务 测试名称:启动服务器服务。 服务器端功能:启动服务器,侦听客户端发送的请求,响应客户 端请求。显示服务器名称、ip、在线人数、聊天日志等。 测试流程:运行服务器端程序。 获取本地 ip 地址,从本地配置文件中读取端口号。 显示服务器配置信息。 弹出服务器端主窗体,菜单栏上“启动服务按钮”的状态应为不 可以用。 服务器启动成功,进入侦听状态,侦听客户端发送的请求。 显示客户端聊天日志。 测试结果:服务器启动成功,功能正常运行。 毕业论文 26 第八章 结论 本课题讨论了如何利用 java 编程语言开发仿 qq 聊天系统,并满 足了分层处理、界面友好、响应速度快、服务安全性以及稳定性等特 点。 该课题从设计、规划、编码、运行到测试,已完成所有的研究项 目。整个研究开发过程中,是一个不断探索不断学习的过程。其开发 过程大致可以分为一下三个大的阶段: 第一个阶段是该软件的开发计划,需求分析和调研阶段,在这个 阶段里,大致的学习了 java 的相关技术,分析了目前流行的聊天软 件的性能和功能。 第二阶段就是软件的设计与实现。在这过程中,开始是该软件的 需求分析与初步设计以及实现阶段,这是该软件的第一个模型。然后 是对软件的结构进行改进的阶段,这是该软件的第二个模型。经过一 段时间的测试对界面做了改进。可以说该软件的总体开发模式采用原 型演化的开发模型。现在该项目已经基本上完成了所有的要求,还扩 展了一些功能。 第三个阶段是软件的测试和论文整理阶段,完成了对软件的所有 的功能的测试,并且认真完成论文的编写。 系统侧重于研究并实现了 java 网络编程的部分。根据实现的情 况看,具有友好的聊天界面效果,以及流畅的网络通信效果。生成的 聊天室可以达到基本的聊天要求,具有较高的研究价值。 系统具有目前聊天室的基本功能:包括支持字体样式选择,支持 私聊和公聊,支持文件传送。具有速度快,高稳定性,占用系统资源 毕业论文 27 少,用户界面友好等特点。 通过毕业设计,发现自己在理论研究和实际工作能力等方面都得 到了提高,受益匪浅。同时在导师的指导下,及时总结研究成果,这 些无疑会对我今后的工作和学习带来很大的帮助。 致谢 在课堂上我学习了诸多

温馨提示

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

评论

0/150

提交评论