You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
p6fbkl32v d52d49c519
更新打包:添加 dist 和 build 文件至版本控制
1 week ago
build 更新打包:添加 dist 和 build 文件至版本控制 1 week ago
client Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
database Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
dist/SimpleChat 更新打包:添加 dist 和 build 文件至版本控制 1 week ago
server Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
.gitignore 更新打包:添加 dist 和 build 文件至版本控制 1 week ago
README.md Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
config.json Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
requirements.txt Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago
软件文档.md Initial commit: SimpleChat 即时通信系统 v2.3 2 weeks ago

README.md

SimpleChat

基于 Python + PyQt5 的局域网即时通信系统,支持私聊、群聊、好友管理和历史记录。

环境要求

  • Python 3.8+
  • PyQt5 >= 5.15.0
pip install PyQt5>=5.15.0

快速启动

方式一:直接运行(需 Python 环境)

启动服务器

cd server
python main.py
# python main.py --host 0.0.0.0 --port 8888

启动客户端

cd client
python main.py

方式二:打包运行(无需 Python 环境)

打包后的可执行文件位于 dist/SimpleChat/

dist/SimpleChat/
├── SimpleChat-Server.exe    # 服务器8.5 MB
├── SimpleChat-Client.exe    # 客户端37 MB含 PyQt5
├── 启动服务器.bat            # 一键启动服务器
├── 使用说明.txt             # 使用指南
├── database/               # 数据自动创建于此
├── avatars/
├── messages/
└── logs/
  1. 双击 启动服务器.batSimpleChat-Server.exe
  2. 双击 SimpleChat-Client.exe

自定义打包:

pip install pyinstaller
pyinstaller --onefile --console --name SimpleChat-Server server/main.py
pyinstaller --onefile --noconsole --name SimpleChat-Client --hidden-import PyQt5.sip client/main.py

默认账户

用户名 密码 昵称
admin 123456 系统管理员
user1 123456 用户一
user2 123456 用户二
user3 123456 用户三

功能

  • 用户注册/登录
  • 个人资料修改:用户名、昵称、密码(入口:主窗口右上角齿轮按钮)
  • 私聊:实时消息 + 历史记录 + 消息搜索
  • 群聊:创建/加入/退出群组、群内广播、邀请好友
  • 好友管理:添加/删除好友、在线状态实时更新
  • 会话列表:最近聊天、未读标记、消息预览
  • 用户搜索与发现
  • 表情选择器
  • 通知浮层与任务栏闪烁提醒
  • 心跳保活
  • 多账号互踢
  • 北京时间同步:所有消息时间戳统一使用 UTC+8

测试数据

首次启动服务器时自动填充测试数据,包括:

  • 4 个用户之间的 14 条私聊对话
  • "技术交流群"群组及 9 条群聊消息
  • 5 组好友关系

界面设计

  • 主色调Indigo-Violet 紫蓝渐变(#6366f1#8b5cf6
  • 侧边栏:深色渐变背景 + 半透明列表
  • 聊天区:淡紫气泡(本人)/ 白色气泡(对方)
  • 欢迎页:紫蓝粉三色渐变卡片
  • 响应式布局:窗口大小自适应

项目结构

├── client/
│   ├── main.py                 # 客户端入口ChatApplication 协调层
│   ├── client_core.py          # TCP 通信核心
│   ├── config.py               # 配置管理
│   ├── utils.py                # 工具函数(校验、配置初始化)
│   └── ui/
│       ├── login_window.py     # 登录窗口(响应式)
│       ├── register_window.py  # 注册窗口(含实时校验)
│       ├── main_window.py      # 主窗口(会话、好友、群组、发现)
│       ├── widgets.py          # 共享组件(校验器、通知浮层、表情、设置)
│       ├── history_window.py   # 聊天记录浏览器
│       ├── search_window.py    # 消息搜索窗口
│       └── group_detail_window.py  # 群组详情窗口
├── server/
│   ├── main.py                 # 服务器入口
│   ├── server_core.py          # 服务器核心(多线程 TCP + 消息路由)
│   ├── database.py             # SQLite 数据库操作WAL 模式)
│   └── config.py               # 服务器配置
├── database/
│   └── init_db.sql             # 数据库初始化脚本
├── messages/                   # 本地消息缓存目录
├── avatars/                    # 头像文件目录
├── logs/                       # 日志目录
└── requirements.txt

数据库

  • 引擎SQLiteWAL 日志模式,支持并发读写)
  • 外键约束已启用
  • 用户密码使用 MD5 哈希存储
  • 所有时间戳统一使用北京时间UTC+8
  • 首次启动自动创建 4 个测试用户并填充示例聊天记录
  • 数据持久化:用户名、密码、昵称、好友关系、聊天记录、群组信息全部保存至 database/chat.db

数据表

表名 说明
users 用户表(含 updated_at 时间戳)
friendships 好友关系表(双向存储)
messages 消息表(私聊/群聊)
groups 群组表
group_members 群组成员表

通信协议

消息格式:[4字节大端长度][JSON数据]

所有消息均为 JSON通过 type 字段区分类型。主要类型:

type 说明
login/register 登录/注册
change_username 修改用户名
change_nickname 修改昵称
change_password 修改密码
chat/group_chat 私聊/群聊消息
get_users/friends 获取用户/好友列表
create/join/leave_group 群组操作
get_history 获取聊天记录
search_messages 搜索消息
heartbeat 心跳保活

更新日志

v2.3

  • 所有时间戳统一为北京时间UTC+8消除时区偏差
  • 首次启动自动填充测试数据(好友、群组、聊天记录)
  • 数据库 init_database 集成 seed 逻辑

v2.2

  • 新增用户名、昵称、密码修改功能
  • 数据库启用 WAL 模式,性能提升
  • 新增 updated_at 时间戳字段
  • 全面升级 UI 配色Indigo-Violet 主题)
  • 默认内置 4 个测试用户
  • SettingsDialog 重构,支持多类型资料修改

v2.1

  • 初始版本:注册登录、私聊、群聊、好友管理、历史记录、消息搜索