悄悄说----简易聊天室

为了巩固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.后期扩展

  目前只是实现了一个简单的聊天室,后期会结合前端知识实现可以运行的界面.

Guess you like

Origin blog.csdn.net/qq_40408443/article/details/97888768