/Chat-Room

一款使用Java开发的具有图形化界面的局域网聊天室

Primary LanguageJava

软件介绍

这个聊天程序是本人大二上小学期实训项目之一,分为客户端和服务器端,使用Java语言开发,可以实现局域网内的群聊和私聊,具有登录校验功能。萌新一枚,求大佬指点

运行环境

  • 此软件使用的JDK版本为15.0.1
  • 此软件使用MySQL数据库
  • 此软件GUI窗口使用JFormDesigner创建并在此基础上进行制作
  • 推荐使用IDEA进行项目的导入与编译
  • 项目需要使用的JAR包
    1. gson
    2. mysql-connector-java-8.0.22
  • 客户端和服务器使用的端口号为3060

使用方法

  1. 服务器端使用的登录账号为MySQL账号,需要提前在数据库中创建账号
  2. 需要提前在数据库中创建名为CSD的数据库,且在csd数据库中添加以下表:
    • user_info
      • name varchar 主键
      • password varchar
  3. 客户端使用的账号存储在csd数据库中的user_info表中,需要提前在表中填入账号数据
  4. 客户端发送消息前需要在右边的用户列表中选择相应的用户
  5. 如果服务器登录时出现异常: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;
  6. 服务器日志文件会保存在项目文件夹下

软件结构

  • 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开源协议