# FileTransfer **Repository Path**: peng20/FileTransfer ## Basic Information - **Project Name**: FileTransfer - **Description**: 基于QT开发的文件传输工具 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 2 - **Created**: 2023-09-04 - **Last Updated**: 2025-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FileTransfer #### 介绍 使用Qt开发的文件传输工具,支持文件上传与下载功能,支持断点续传功能,支持多文件的上传下载。 #### 软件架构 1. 客户端基于QTcpSocket实现,支持多个文件的连续上传于下载,实现Socket的复用。 2. 服务器基于QTcpServer实现,采用Reactor并发模式,可同时处理多个Socket请求。 3. 自定义连接函数,当有新的连接到达时,会创建新的Socket并采用moveToThread接口,将其移入当前活跃Socket数量最小的线程中。 4. 服务器接收到客户端的请求后会判断文件是否存在并验证文件MD5值,设置文件偏移量为断点续传做准备。 5. 服务器采用状态机解析客户端的请求类型并做出不同的处理。 6. 服务器采用Qt本身的事件循环和信号槽机制进行数据传输,通过设置两者的交互机制,避免了TCP粘包问题以及QTcpSocket的readyRead信号触发问题。 #### 上传下载流程 ![输入图片说明](https://foruda.gitee.com/images/1693795875277693327/c51c37af_12432163.png "file_transfer.png")