计算机html大作业聊天室,java大作业设计报告-JAVA聊天室.docx

PAGE \* MERGEFORMAT18

JAVA程序设计

多人聊天室

设计目的

Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。本次课程设计旨在应用JAVA编程语言中的网络通信,多线程,数据库编程,图形界面编程等技术实现一个基本的多人在线网络聊天室。并以此巩固JAVA基础知识,体会面向对象的设计方法。

平台要求

使用:

搭载JAVA运行环境的平台即可。

开发环境:

Windows10 64bit

JDK 1.8

Eclipse 4.4

Window Builder

需求分析

管理员:启动服务器,关闭服务器,强制用户退出,聊天房间增添改查。

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

用例图:

概要设计

服务器设计

将客户端的请求抽象化,每种请求服务器都会产生一个特定的类的对象去处理它。服务器负责接受客户端请求,根据请求内容完成指定工作。为提高效率,采用多线程结合线程池设计技术,对于每个请求在线程池内得到一个线程去处理请求。如图3-1所示。

客户端设计

5图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 1服务器概要图

5

图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 1服务器概要图

43

4

3

7612图 STYLEREF 1 \s 4 SEQ 图 \* ARABIC \s 1 2客户端概要图

7

6

1

2

详细设计

服务器详细设计

服务器要完成的任务是接受客户请求并在自己维护的数据结构上进行相应处理最终将处理结果返回给客户端。具体涉及到多线程,数据库,网络通信几项技术,同时为了实时根据请求产生特定类的对象使用了反例技术。

总体概览

服务器端的入口类为ServerMain。聊天室服务器端代码可分为以下八个部分。除最后两个部分外其他部分为串行执行。在接听后,创建的线程会并发处理客户请求。由于各个处理并发的特点,使得服务器的响应不会应为某个而用户阻塞,提高了效率。

图 STYLEREF 1 \s 5 SEQ 图 \* ARABIC \s 1 1聊天室服务器代码布局

服务器将用户操作抽象为不同的工作类,在接收到请求后根据消息协议在当前实现的工作类名列表中找到类名(通过下标在CommandList类中的List commandsList属性中得到),通过反例技术直接生成类的对象。各个类对象负责具体工作,他们都继承ServerWorkClass。而ServerWorkClass继承自WorlClass因为客户端对服务器的回复也应当有特定的类去处理它。目前实现的类有以下五种。当要添加新功能时只需向commandsList属性静态添加索引。进一步,也可在以后加入新的机制实现动态添加功能。

表 STYLEREF 1 \s 5 SEQ 图 \* ARABIC \s 1 2工作类名及其工作内容

类名

服务器端动作

HouseRelative

处理用户的进入、离开房间请求

Login

处理用户的上线、下线请求

Messages

处理用户的消息发送请求

UserDelAdd

处理用户注册请求

UserInfo

处理用户的用户信息查询设置请求

服务器中涉及到的类图如下所示:

协议约定及实现

由于要考虑客户端的各个请求需要完成不同的操作,需要根据数据来内容来做特定的工作,本聊天室将通信协议定义如下:

userID:服务器通过此ID确定消息是由哪个用户发出的。

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

command:表示用户的请求类型其值为具体操作的工作类在commandsList中的下标,服务器通过此下标找到类名产生类的对象。到这里为止的工作都是由一个CommandHandler的类的对象来完成,它实现了Runnable接口,在Accepter类的对象接受到消息后产生一个线程来执行对消息的下一步处理,其主要工作就是通过WorkingClassFactory使用反例技术产生具体工作类,之后调用工作类的doJob()方法完成任务。

command2:一个具体工作类是对一类操作的抽象,如与房间相关的操作可能包括进房间和出房间,而具体内容就是根据command2来标示的。从这里开始的工作已经进入到了WorkingClass的代码区域。

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

之后就是具体消息的定义区域。首先一个MessageAmount来表示消息个数,而之后每条消息都

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值