本仓库代码是上海交通大学 2024-2025 学年春季学期 CS3611 计算机网络课程的大作业题目二的实现。该题目要求请看大作业题目二————分布式即时聊天系统开发。
本项目采用pm2作为进程管理工具,在阿里云服务器上进行部署,可以访问Whisper或者扫描下方的二维码进行在线体验。
- 掌握基于 TCP/UDP 的网络通信原理
- 实践多线程编程与并发控制
- 理解客户端-服务器架构设计
- 实现基础网络协议设计(如心跳包、文件传输协议)
- 用户注册/登录(用户名唯一性校验)
- 一对一文字聊天(支持私聊)
- 群组聊天(支持创建/加入/退出群组)
- 用户在线状态显示(在线/离线)
- 消息历史记录(本地存储或服务器存储)
- 用户管理(注册信息存储、在线状态同步)
- 消息路由(将消息转发给指定用户/群组)
- 支持至少 50 个客户端并发连接
- 心跳机制检测客户端离线
- 文件传输(支持断点续传)
- 端到端加密通信(如 AES 加密)
- 语音/视频聊天(基于 UDP 实现基础版)
- 消息撤回功能(服务器协调)
- 跨平台兼容性(支持 Windows/Linux/macOS 客户端)
- 编程语言:Python/Java/C++(推荐 Python)
- 通信协议:TCP 用于文字/文件传输,UDP 可选用于状态广播
- 多线程:必须使用多线程/异步 处理并发请求
- 数据存储:SQLite/JSON 文件或内存数据库(如 Redis)
- 服务器开发(处理连接、路由、用户管理) 1-2 人
- 客户端开发(实现 UI、消息发送/接收逻辑)1-2 人
- 协议设计(定义通信协议格式与接口)1 人
- 测试(压力测试、性能调优)1 人
- 代码
- 客户端和服务器端完整源码
- 包含清晰的代码注释和模块说明
- 文档
- 设计文档:系统架构图、协议定义(消息格式示例)
- 测试报告:并发压力测试结果(如 100 用户同时在线)
- 用户手册:客户端安装与使用说明
- 演示
- 现场展示 3 个客户端同时通信(文字+文件传输)
- 模拟服务器断线重连场景
