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.
|
|
2 weeks ago | |
|---|---|---|
| client | 2 weeks ago | |
| database | 2 weeks ago | |
| server | 2 weeks ago | |
| .gitignore | 2 weeks ago | |
| README.md | 2 weeks ago | |
| config.json | 2 weeks ago | |
| requirements.txt | 2 weeks ago | |
| 软件文档.md | 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/
- 双击
启动服务器.bat或SimpleChat-Server.exe - 双击
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
数据库
- 引擎:SQLite(WAL 日志模式,支持并发读写)
- 外键约束已启用
- 用户密码使用 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
- 初始版本:注册登录、私聊、群聊、好友管理、历史记录、消息搜索