java大作业设计报告-JAVA聊天室

JAVA 程序设计 多人聊天室 131******** 1

1 设计目的 Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统 无关、可移植、高性能、多线程和静态的语言。

本次课程设计旨在应用 JAVA 编 程语言中的网络通信,多线程,数据库编程,图形界面编程等技术实现一个基本 的多人在线网络聊天室。

并以此巩固 JAVA 基础知识, 体会面向对象的设计方法。

2 平台要求 2.1 使用: 搭载 JAVA 运行环境的平台即可。

2.2 开发环境: Windows10 64bit JDK 1.8 Eclipse 4.4 Window Builder 3 需求分析 管理员: 启动服务器, 关闭服务器, 强制用户退出, 聊天房间增添改查。

用户:GUI,注册,登陆,聊天等。

用例图: System Sign Up Client User Login and logout Start up server istrator Enter and leaveHouse Server User logout Chat House delete or add Database User Info get and set 2

4 概要设计 4.1 服务器设计 将客户端的请求抽象化, 每种请求服务器都会产生一个特定的类的对象去处 理它。

服务器负责接受客户端请求,根据请求内容完成指定工作。

为提高效率, 采用多线程结合线程池设计技术, 对于每个请求在线程池内得到一个线程去处理 请求。

如图 3-1 所示。

4.2 客户端设计 聊天室中一个事物的过程基本流程是:用户产生动作,客户端发送消息,服 务器接收并处理,服务器返回处理结果,GUI 根据结果进行显示的更新。

客户端 只在 GUI 中采用多线程设计。

而对服务器回应的接受都是单线程的因为只有一个 服务器为自己服务, 且在接收数据过程中连接是不可断开的。

客户端的设计如图 3-2 所示。

一次事物流程中的步骤编号在图中给出。

3 4 5 图 4-1 服务器概要图 6 7 1 2 图 4-2 客户端概要图 3

5 详细设计 5.1 服务器详细设计 服务器要完成的任务是接受客户请求并在自己维护的数据结构上进行相应 处理最终将处理结果返回给客户端。

具体涉及到多线程,数据库,网络通信几项 技术,同时为了实时根据请求产生特定类的对象使用了反例技术。

5.1.1 总体概览 服务器端的入口类为 ServerMain。

聊天室服务器端代码可分为以下八个部分。

除最后两个部分外其他部分为串行执行。

在接听后,创建的线程会并发处理客户 请求。

由于各个处理并发的特点,使得服务器的响应不会应为某个而用户阻塞, 提高了效率。

初始化数据库 设置本地发送Socket 初始化用户信息 设置本地端口启 动并 初始化房间信息 接听成功 初始化房间信息 处理并发送相应 图 5-1 聊天室服务器代码布局 服务器将用户操作抽象为不同的工作类, 在接收到请求后根据消息协议在当 前 实 现 的 工 作 类 名 列 表 中 找 到 类 名 ( 通 过 下 标 在 CommandList 类 中 的 ListcommandsList 属性中得到) ,通过反例技术直接生成类的对象。

各个 类对象负责具体工作,他们都继承 ServerWorkClass。

而 ServerWorkClass 继承自 WorlClass 因为客户端对服务器的回复也应当有特定的类去处理它。

目前实现的 类有以下五种。

当要添加新功能时只需向 commandsList 属性静态添加索引。

进 一步,也可在以后加入新的机制实现动态添加功能。

4

表 5-2 工作类名及其工作内容 类名 HouseRelative Login Messages UserDelAdd UserInfo 服务器端动作 处理用户的进入、离开房间请求 处理用户的上线、下线请求 处理用户的消息发送请求 处理用户注册请求 处理用户的用户信息查询设置请求 服务器中涉及到的类图如下所示: SeverMain DataBaseServer Accepter UserFactory User CommandHandler HouseFactory House PacketUnit WorkingClassFactory Sender Login WorkingClass BlackList HouseRleative UserDelAdd Messages DateAndTime Friends 5.1.2 协议约定及实现 由于要考虑客户端的各个请求需要完成不同的操作, 需要根据数据来内容来 做特定的工作,本聊天室将通信协议定义如下: userID:服务器通过此 ID 确定消息是由哪个用户发出的。

authorizationcode:服务器对用户身份进行认证的域,每次在接受用户请求 后都会更新一个随机数, 并且将内容返回,而用户在请求服务器时必须使用最新 的验证码否则不会得到服务器响应。

这防止了非法用户的不正当操作。

5

command:表示用户的请求类型其值为具体操作的工作类在 commandsList 中的下标, 服务器通过此下标找到类名产生类的对象。

到这里为止的工作都是由 一个 CommandHandler 的类的对象来完成, 它实现了 Runnable 接口, 在 Accepter 类的对象接受到消息后产生一个线程来执行对消息的下一步处理, 其主要工作就 是通过 WorkingClassFactory 使用反例技术产生具体工作类,之后调用工作类的 doJob()方法完成任务。

command2:一个具体工作类是对一类操作的抽象,如与房间相关的操作可 能包括进房间和出房间, 而具体内容就是根据 command2 来标示的。

从这里开始 的工作已经进入到了 WorkingClass 的代码区域。

result:是服务器向客户端告知请求是否正常完成的字段。

之后就是具体消息的定义区域。

首先一个 MessageAmount 来表示消息个数, 而之后每条消息都有一个 int 域来表示其长度。

为了支持中文,采用字符数组而 不是字节数组。

服务器和客户端都将协议下的具体报文封装在了 PacketUnit 类中, 其主要提 供了一个通过输入流来构建自身的构造方法和重写了 toString 方法以便发送时序 列化。

PacketUnit 的产生源头是 GUI 的处理函数。

由特定部位按钮或组件调用 PackUnitGenerator 类的特定静态方法产生特定的对象。

5.1.3 初始化数据库 数据库采用 JAVA 数据库 JDBC 技术。

一般步骤为加载特定数据库驱动,产生 建立连接的 URL,根据 URL 连接数据库,在连接上创建 statement 类的对象进行 查询和更新任务的发送。

与数据库有关的所有工作都由 DataBaseServer 类来完成。

由于考虑到聊天室中大部分操作不需要数据库, 并且全程一个连接可能在并发过 程中会导致潜在的错误, 在初始化中只进行了驱动的加载。

之后需要查询或更新 数据库时通过创建 DataBaseServer 类的对象来创建新的连接, 以对象为单位向数 据库发送查询请求。

DataBaseServer 主要以下几个方法: publicstaticvoid init(); 完成数据库驱动的加载, 并且由于静态方法第一次调用,获取服务器连接的 DataBaseServer 静态属性 URL 也会在此时生成。

public DataBaseServer(); DataBaseServer 的构造函数, 每次调用都会创建一条向 MYSQL 数据库的连接。

publicint updateQuery(String job); 向已连接的数据库发送一个更新请求,参数为 SQL 更新语句。

public ResultSet getResult(String job); 向已连接的数据库发送一个查询请求, 参数为 SQL 查询语句。

并且返回一个 ResultSet 结果,是一个包含了查询结果的对象。

具体代码位于 DataBaseServer.java 文件内。

数据库采用 MySQL 数据库,使用到了两张表,定义如下: userinfo 表: 表项 类型 6

本文标题:java大作业设计报告-JAVA聊天室, 搜寻更多关于“java大作业设计报告-JAVA聊天室
链接地址:https://www.zlholdings.com/0rttw1ymqxpr001zyvzpppu0.html

相关内容
  • Java聊天室程序设计报告

    Java聊天室程序设计报告

    Java聊天室程序设计报告...

    贡献者:网络收集
    930986
  • java课程设计报告-聊天室

    java课程设计报告-聊天室

    java课程设计报告-聊天室...

    贡献者:网络收集
    808400
  • Java聊天室课程设计报告

    Java聊天室课程设计报告

    Java聊天室课程设计报告...

    贡献者:网络收集
    367413
  • java课程设计报告(java聊天室)

    java课程设计报告(java聊天室)

    java课程设计报告(java聊天室)...

    贡献者:网络收集
    881458
  • java聊天室程序设计实验报告

    java聊天室程序设计实验报告

    java聊天室程序设计实验报告...

    贡献者:网络收集
    129880
  • Java实验报告:聊天室的设计

    Java实验报告:聊天室的设计

    Java实验报告:聊天室的设计...

    贡献者:网络收集
    750739
  • JAVA课程设计实验报告 “聊天室”报告

    JAVA课程设计实验报告 “聊天室”报告

    JAVA课程设计实验报告 “聊天室”报告...

    贡献者:网络收集
    988860
  • Java大作业设计报告

    Java大作业设计报告

    Java大作业设计报告...

    贡献者:网络收集
    290010
  • JAVAWEB设计一个简易聊天室实验报告

    JAVAWEB设计一个简易聊天室实验报告

    JAVAWEB设计一个简易聊天室实验报告...

    贡献者:网络收集
    672292
  • Java聊天室系统程序设计实验报告

    Java聊天室系统程序设计实验报告

    Java聊天室系统程序设计实验报告...

    贡献者:网络收集
    618746
  • 网友在搜
    vba sort type 苹果手机旗舰店 surfacewhite 疼 李川肌肉 python is empty solidworks画油管 柳屋防脱 木制挂墙板英文 vue auth 跳转 2008年大众途锐v8报价 elasticsearch-hadoop 帆软导出excel 刘羽琦玻璃窗片段视频 战斗天使 6s怎么拍特写 I love you dido 手机磁链 荣耀6应用分身 genr lny log y 血族第四季 thunder marbles是玻璃球吗 20m s 云起_安向暖 87fuli com宅男200p kube api镜像 伊可新绿葫芦说明书 克林特.巴顿 疾驰残影2下载 mu583是晚上飞 学前班道德教育 资生堂气垫色号n1 中国春节bbc纪录片 yousoku和雅戈尔 苹果music怎么取消 cod10 模糊 霸王之心 新闻消息范文 adobe effects cc pola抗糖化 gtx1080可以上4k吗 婚入心扉 春秋战国时期的人物 谷歌tango手机 像素图画法 vm mac os 无网络 帕秋莉与触手漫画 amd fx8300 938针 璀璨者弓勒姆txt 求魂之路 华为mate9掉电快 赶趟儿巴士路线望京 杭州之江饭店婚宴 woollim公司地址 be alter 钱的标志符号 京瓷twain扫描软件 bring to the end造句 聚羧酸合成自动设备

    声明:本站内容源于网络,出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,请咨询相关专业人士。

    如果无意之中侵犯了您的版权,或有意见、反馈或投诉等情况, 联系我们:gdvz5820#163.com

    Copyright © 2017 All Rights Reserved 中仑资料网 手机站