这个聊天程序是本人大二上小学期实训项目之一,分为客户端和服务器端,使用Java语言开发,可以实现局域网内的群聊和私聊,具有登录校验功能。萌新一枚,求大佬指点
- 此软件使用的JDK版本为15.0.1
- 此软件使用MySQL数据库
- 此软件GUI窗口使用JFormDesigner创建并在此基础上进行制作
- 推荐使用IDEA进行项目的导入与编译
- 项目需要使用的JAR包
- gson
- mysql-connector-java-8.0.22
- 客户端和服务器使用的端口号为3060
- 服务器端使用的登录账号为MySQL账号,需要提前在数据库中创建账号
- 需要提前在数据库中创建名为CSD的数据库,且在csd数据库中添加以下表:
- user_info
- name varchar 主键
- password varchar
- user_info
- 客户端使用的账号存储在csd数据库中的user_info表中,需要提前在表中填入账号数据
- 客户端发送消息前需要在右边的用户列表中选择相应的用户
- 如果服务器登录时出现异常:java.sql.SQLException: The server time zone value ' й ʱ ' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specific time zone value if you want to utilize time zone support.;则运行下列SQL语句:
- set global time_zone = '+8:00';
- set time_zone = '+8:00';
- flush privileges;
- 服务器日志文件会保存在项目文件夹下
-
pers.song
-
client 客户端程序
-
core
-
ClientCore
客户端核心类,包含客户端的Main方法
-
-
gui
-
LoginFrame
客户端登录界面
-
ChatFrame
客户端聊天界面
-
-
net
-
ClientNetController
客户端的网络操控类,客户端通过这个类来操控网络相关功能,如发送消息
-
ClientLoginReader
客户端登录监听类,在用户尝试登录时会使用此类来监听来自服务器的登录指令
-
ClientLoginConnector
客户端连接类,用来连接到服务器
实现了Runnable接口,需要放在线程中使用
-
ClientWriter
客户端用这个类来向服务器发送消息
实现了Runnable接口,可以在线程中使用,也可以单独使用
-
ClientReader
客户端用这个类来监听来自服务器的消息
实现了Runnable接口,在用户登录成功后开启线程来监听消息
-
-
-
common 通用类
-
gui
-
ExceptionFrame
异常显示窗口,用来显示程序发生的异常
不能单独使用,需要指定主窗口
-
WarningFrame
提示消息窗口,用来向用户显示提示消息
不能单独使用,需要指定主窗口
-
-
utlis
-
border
-
RoundBorder
这个类能够为输入框绘制圆角窗口
-
-
pack
-
MessagePack
这个类封装了消息包,用于服务器和客户端传递消息
发送的消息都需要放在这个类中
-
Command
这个一个Enum,包含了通信时使用的所有指令
不是一个类,不能单独使用
-
-
-
-
resourcer
包含了软件所使用的图片资源
-
server 服务器端程序
-
core
-
ServerCore
服务器的核心类,包含了服务器的Main方法
-
-
dao
-
DBController
数据库操作类,服务器使用这个类来操作数据库
-
-
gui
-
LoginFrame
服务器的登录窗口
-
ServerFrame
服务器的主窗口,用于显示服务器的各项状态
-
-
net
-
ServerNetController
网络操作类,服务器用这个类来使用网络相关的功能
-
LoginListener
在服务器启动成功后,使用这个类来监听用户的登录请求
实现了Runnable接口,需要开启一个线程来使用
-
ServerLoginReader
用于读取用户发送的登录信息,在收到用户的登录请求后开启
实现了Runnable接口,可以在线程中使用
-
ServerWriter
服务器使用这个类向客户端发送数据
实现了Runnable接口,可以在线程中使用
-
ServerReader
服务器使用这个类来监听来自客户端的数据,在客户端登录成功后开启,一个客户端对应一个监听器
实现了Runnable接口,必须在线程中使用
-
-
-
- 2020.12.7
- 添加了登录界面、提示窗口和异常窗口
- 添加了主程序
- 添加了图片资源
- 添加了用于绘制圆角边框的圆角边框类
- 2020.12.14
- 为登录界面添加了IP输入框
- 简化了提示窗口和异常窗口的调用
- 优化了项目的包结构
- 2020.12.15
- 优化了异常窗口的使用体验
- 为服务器端添加了主界面,开始制作网络功能
- 为客户端添加了聊天窗口,为输入框添加了字数限制
- 2020.12.16
- 添加了登录校验功能
- 添加了重复登录检验功能
- 为服务器用户列表添加更新功能
- 添加服务器日志功能
- 添加了服务器开启和关闭功能
- 2020.12.17
- 添加了消息发送功能, 能够群发和私发
- 添加了用户退出功能,用户退出后会刷新其他用户的用户列表, 同时会更新服务器端信息
- 修复了客户端退出时报错的BUG
- 修复了大量BUG
- 2020.12.18
- 添加了消息更新后面板自动滚动的功能
- 添加了消息回车发送功能,可以选择是否选择回车发送
- 添加了服务器关闭提示消息
- 为客户端聊天界面添加了清空消息面板按钮
- 为不同的消息添加了不同的显示颜色
- 添加了服务器日志功能,每次关闭服务器后都会保存日志文件
- 修复了一些BUG
- 2020.12.20
- 为开启和关闭服务器按钮添加了图标
- 更改了日志文件的写入方式,现在新日志会追加至旧文件而不是覆盖旧文件
- 修复了聊天窗口字数不能正常显示的BUG
- 添加了回车发送模式下Ctrl+Enter输入回车的功能
- 为聊天窗口添加了清空消息框功能
- 2020.12.21
- 调整了异常窗口的布局
- 微调了聊天窗口的布局
- 2020.12.22
- 为服务器界面添加了本机IP显示功能
- 删除了多余的语句
- 将聊天界面和服务器主界面的用户列表设置为了不可编辑
- 2020.12.23
- 为聊天窗口添加了新消息提示功能
- 2020.12.24
- 调整了群发消息的颜色
- 解决了客户端连接服务器失败时界面卡死的问题
- 限制了IP框的输入长度,现在每个IP框最多只能输入三位
- 2020.12.25
- 修复了客户端收到消息时输入框光标消失的BUG
- 修复了回车发送时末尾换行的BUG
- 修复了服务器为启动时关闭窗口会报错的BUG
此软件遵守GPL开源协议