`2020-12-29 00:19:40 星期二` ------------ ### 该仓库共有三项目 ### [SocketDemo](http://39.108.133.138:3000/weiyong/202012G09/src/master) - 初版 ### [LinkChat](http://39.108.133.138:3000/weiyong/202012G09/src/linkchat) - 拓展 ### [ChatRoom](http://39.108.133.138:3000/weiyong/202012G09/src/chatroom) - 终版 ------------ # ChatRoom ## 『 环境 』 #### jdk:11.0 #### redis:2.8.9 #### maven工程 ## 『 模式 』 #### 仍延用SocektDemo的C/S模式 #### 实现多个客户端之间的私聊,群聊,私发文件,群发文件 ## 『 思路 』 #### 把SocketDemo重新解构完善,实现多方通讯 > ##### 具体思路如下图: ![思路3](https://s3.ax1x.com/2020/12/28/r7d5sP.png "思路3") #### - 客户端,服务端分离 #### - 客户端通过Redis数据库实现注册 登录 修改密码 #### - 登录成功后连接服务端 发送消息 并接收服务器转发的消息 ## 『 模块 』 - ### bean ##### 存储实体类 Info:通信的消息报文类,包括消息报文的类型、内容、发送者、接收者、文件。 User:客户端实体,包含username,password,image,分别代表用户名,密码,头像。 - ### Service ##### 存储业务类 Starter:启动类包 ---------Server:服务端启动类 ---------Client:客户端启动类 - ### Util ##### 工具类 RedisUtils:用于与Redis远程服务器的操作,包括存用户名、密码等的缓存。 SwingUtils:包含Swing组件需要的方法,包括图标比例自适应、等比例面板大小。 ToolUtils:通用功能工具类,包括获取系统时间、获得文件后缀名、读写文件、获得用户头像等。 ## 『 效果 』 >![服务器](https://s3.ax1x.com/2020/12/29/r7BtIS.png "服务器") >![客户端连接](https://s3.ax1x.com/2020/12/29/r7BUPg.png "客户端连接") >![上传文件](https://s3.ax1x.com/2020/12/29/r7BaGQ.png "上传文件") 本项目部分代码参考了[ zpc/java swing实现聊天室 ](https://blog.csdn.net/weixin_43476969/article/details/107012791)