轻聊-聊天室的设计思路
1.写在前⾯
学完Java后,⼀⽅⾯为了巩固知识,另⼀⽅⾯也是看看⾃⼰对知识的掌握程度,所以动⼿写了⼀个⼩型Java项⽬ - 简易聊天室。它是⼀个可以实现多⼈通讯功能的简单项⽬。因为是第⼀次⾃⼰写项⽬,所以并没写的特别复杂,只是简单实现了注册、聊、私聊、退出功能。
2.整体思路
我在该项⽬⾥采⽤的是C/S架构。它的编程包括客户端编程和服务器端编程两部分。
整体架构考虑好以后,模拟⼀下整个聊天过程:甲连接到服务器并注册好以后,编辑⼀条消息,输出到服务器,再由服务器判别是聊还是私聊后,根据情况转发。结束聊天后下线,由客户端断开连接。
3.功能模块
聊天室功能模块图
4.功能分析
(1)对于客户端来说:需要两个线程实现读写分离,做到读时能写、写时能读。
读线程读取服务器发来的消息。
写线程的功能有两个:1)读取键盘输⼊并发给服务器;2)控制客户端的关闭。
(2)对于服务器来说:
因为是多⼈通讯功能,所以每当有⼀个客户端连接到服务器,都有创建⼀个线程来处理此客户端的请求。socket编程聊天室基本流程
当客户端连接成功时,服务器还要处理客户端发来的消息,因此我定义了如下规则:
1)userName:⽤户名:表⽰注册⽤户
2)G:消息内容:表⽰发送聊消息
3)P:⽤户名A-消息内容:表⽰给⽤户名A发送私聊消息
4)byebye:表⽰退出,关闭客户端连接
5.编码实现
6.涉及技术
类、接⼝
多线程
I/O操作(Scanner、PrintStream)
Socket编程
7.开发环境
Windows、Maven、IDEA
8.项⽬测试
(1)划分等价类
有效等价类:
⽆效等价类:
1)其他消息(不包含关键字):服务器不做处理,测试成功。
2)其他内容(图⽚、⽂件、...):服务器不做处理,测试成功。
3)发送空消息:服务器不处理
4)私聊对象不在线:服务器不处理
(2)边界值分析
1)最⼤消息长度:⽆限制
2)最短消息长度:1(长度为0不处理)
3)最多在线⼈数:19(第20个客户端连接被拒绝)
5)最多聊⼈数:19(只能有19个客户端)
(3)异常点测试
1)连接突然断开:客户端中断,⽆法使⽤功能
2)客户端⾮正常退出(⼿动关闭客户端):客户端⽆法使⽤,服务器正常⼯作。
3)服务器⾮正常关闭(⼿动关闭服务器):服务器关闭,所有客户端随之关闭,⽆法使⽤。
9.扩展思路
图⽚、⽂件发送
保存⽤户信息(我的好友、我的组)
历史记录
⽤户界⾯
显⽰在线好友、显⽰我的组
删除好友、退出组
最长消息现在、最短消息限制、最多聊⼈数发送离线消息
(以上扩展功能等待后期实现)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论