Skip to content

ukeSJTU/whisper

Repository files navigation

Whisper

本仓库代码是上海交通大学 2024-2025 学年春季学期 CS3611 计算机网络课程的大作业题目二的实现。该题目要求请看大作业题目二————分布式即时聊天系统开发

本项目采用pm2作为进程管理工具,在阿里云服务器上进行部署,可以访问Whisper或者扫描下方的二维码进行在线体验。


大作业题目二————分布式即时聊天系统开发

实验目标

  1. 掌握基于 TCP/UDP 的网络通信原理
  2. 实践多线程编程与并发控制
  3. 理解客户端-服务器架构设计
  4. 实现基础网络协议设计(如心跳包、文件传输协议)

实验要求

1. 基础功能(必做)

(客户端功能)

  • 用户注册/登录(用户名唯一性校验)
  • 一对一文字聊天(支持私聊)
  • 群组聊天(支持创建/加入/退出群组)
  • 用户在线状态显示(在线/离线)
  • 消息历史记录(本地存储或服务器存储)

(服务器功能)

  • 用户管理(注册信息存储、在线状态同步)
  • 消息路由(将消息转发给指定用户/群组)
  • 支持至少 50 个客户端并发连接
  • 心跳机制检测客户端离线

2. 扩展功能(选做,任选 2 项)

  • 文件传输(支持断点续传)
  • 端到端加密通信(如 AES 加密)
  • 语音/视频聊天(基于 UDP 实现基础版)
  • 消息撤回功能(服务器协调)
  • 跨平台兼容性(支持 Windows/Linux/macOS 客户端)

技术栈要求

  • 编程语言:Python/Java/C++(推荐 Python)
  • 通信协议:TCP 用于文字/文件传输,UDP 可选用于状态广播
  • 多线程:必须使用多线程/异步 处理并发请求
  • 数据存储:SQLite/JSON 文件或内存数据库(如 Redis)

分工建议

  • 服务器开发(处理连接、路由、用户管理) 1-2 人
  • 客户端开发(实现 UI、消息发送/接收逻辑)1-2 人
  • 协议设计(定义通信协议格式与接口)1 人
  • 测试(压力测试、性能调优)1 人

实验提交内容

  1. 代码
    • 客户端和服务器端完整源码
    • 包含清晰的代码注释和模块说明
  2. 文档
    • 设计文档:系统架构图、协议定义(消息格式示例)
    • 测试报告:并发压力测试结果(如 100 用户同时在线)
    • 用户手册:客户端安装与使用说明
  3. 演示
    • 现场展示 3 个客户端同时通信(文字+文件传输)
    • 模拟服务器断线重连场景

About

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages