为了巩固java知识,自己写了一个简易的聊天室,该聊天室知识简单的实现了聊天室服务端和客户端,服务端与客户端之间通过 Socket 连接.可以注册,私聊,群聊,退出登录.
1.整体流程
用户连接到服务器并注册好以后,编辑一条消息,输出到服务器,再由服务器判别是群聊还是私聊后,根据情况转发。结束聊天后下线,由客户端断开连接。
2.使用技术:
基于 Socket 的 Java 语言,多线程,I/O
3.开发环境
Maven ,IDEA
4.功能分析
1.对于客户端来说:需要两个线程实现读写分离,做到读时能写、写时能读。
1> 读线程读取服务器发来的消息。
2>写线程的功能由俩个:
1)读取键盘输入并发给服务器;
2)控制客户端的关闭。
2.对于服务器来说:
每当有一个客户端连接服务器时,都会创建一个线程来处理客户端的请求
当客户端连接成功时,服务器还要处理客户端发来的消息
定义了如下规则:
1)userName:用户名:表示注册用户
2)G:消息内容:表示发送群聊消息
3)P:用户名A-消息内容:表示给用户名A发送私聊消息
4)byebye:表示退出,关闭客户端连接
6.项目测试
(1)划分等价类
有效等价类:
无效等价类:
1)其他消息(不包含关键字):服务器不做处理,测试成功。
2)其他内容(图片、文件、...):服务器不做处理,测试成功。
3)发送空消息:服务器不处理
4)私聊对象不在线:服务器不处理
(2)边界值分析
1)最大消息长度:无限制
2)最短消息长度:1(长度为0不处理)
3)最多在线人数:19(第20个客户端连接被拒绝)
5)最多群聊人数:19(只能有19个客户端)
(3)异常点测试
1)连接突然断开:客户端中断,无法使用功能
2)客户端非正常退出(手动关闭客户端):客户端无法使用,服务器正常工作。
3)服务器非正常关闭(手动关闭服务器):服务器关闭,所有客户端随之关闭,无法使用。
7.后期扩展
目前只是实现了一个简单的聊天室,后期会结合前端知识实现可以运行的界面.