项目简介
本项目是基于C++实现的微信富媒体传输系统,能提供高效、可靠的文件上传和下载服务。系统借助客户端、代理端和服务端协同工作,实现大文件和小文件的传输,还支持断点续传功能。
项目的主要特性和功能
客户端
- 支持小文件和大文件的下载与上传,运用多线程技术提升大文件的传输速度。
- 具备容灾设计,若连接的代理节点被kill,会更换代理节点并重新发起连接请求。
代理端
- 通过epoll机制实现高效的数据转发,支持多线程处理,增强系统并发能力。
- 有容灾设计,若代理端被kill,客户端会感知并重新申请未获取的文件块,代理端在connect过程实行主备思想。
服务端
- 支持小文件和大文件的下载与上传,利用多线程技术提高大文件的传输速度。
- 主线程通过epoll监听前端proxy的所有fd,多个线程从处理队列取出相应的fd,依据收到的MSG_TYPE调用相应函数处理。
- 具备容灾设计,若服务端连接的proxy被kill,会关闭和此proxy的所有连接,等待客户端重新连接。
安装使用步骤
环境准备
- 操作系统:Linux
- 编译器:支持C++11标准的编译器(如GCC)
- 依赖库:epoll、pthread
编译与运行
- 复制项目:
bash cd wechat-rich-media-transfer
- 编译项目:
bash mkdir build cd build cmake .. make
- 运行服务端:
bash ./server
- 运行代理端:
bash ./proxy
- 运行客户端:
bash ./client [jobname] filename [time_out_type]
jobname
:任务名称,可以是download
或upload
。filename
:文件名。time_out_type
:超时类型。
示例
- 下载文件:
bash ./client download example.zip 10
- 上传文件:
bash ./client upload example.zip 10
通过以上步骤,可成功运行并测试本系统。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】