文件传输服务器
这是一个基于 C++ 实现的文件传输服务器,支持接收文本和二进制文件。服务器采用多线程设计,可以同时处理多个客户端连接。
功能特点
- 支持多客户端并发连接
- 支持文本和二进制文件传输
- 自动保持文件原始格式(扩展名)
- 使用时间戳确保文件名唯一
- 跨平台支持(Windows/Linux)
- 实时显示传输进度
- 自动创建存储目录
项目结构
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | .├── server/                 # 服务器端代码
 │   ├── include/           # 头文件目录
 │   │   └── Server.h      # 服务器类定义
 │   ├── src/              # 源文件目录
 │   │   ├── Server.cpp    # 服务器实现
 │   │   └── main.cpp      # 程序入口
 │   └── CMakeLists.txt    # CMake 构建配置
 ├── received_files/        # 接收的文件存储目录
 ├── received_texts/        # 接收的文本存储目录
 └── README.md             # 项目说明文档
 
 | 
技术特性
- 使用 C++17 标准
- 基于 TCP 协议
- 多线程并发处理
- 二进制数据传输
- 文件流操作
- 跨平台网络编程
编译要求
- CMake 3.10 或更高版本
- 支持 C++17 的编译器
- Windows:Visual Studio 2019 或更高版本
- Linux:GCC 7.0 或更高版本
构建步骤
- 创建构建目录:
- 生成项目文件:
- 编译项目:
| 1
 | cmake --build . --config Release
 | 
使用说明
- 启动服务器:
默认端口为 9000
- 服务器启动后会自动创建以下目录:
- received_files/:用于存储接收的文件
- received_texts/:用于存储接收的文本
- 文件命名规则:
- 文本文件:text_时间戳.txt
- 二进制文件:file_时间戳.原始扩展名
通信协议
文本传输
- 发送数据类型标识(1 字节):’1’
- 发送数据大小(4 字节整数)
- 发送文本内容
文件传输
- 发送数据类型标识(1 字节):’2’
- 发送数据大小(4 字节整数)
- 发送文件名长度(4 字节整数)
- 发送文件名
- 发送文件内容
注意事项
- 服务器会自动处理文件命名冲突
- 支持任意类型的二进制文件
- 大文件传输时会显示进度信息
- 程序退出时会自动清理资源
错误处理
- 文件创建失败:检查目录权限
- 连接断开:自动清理相关资源
- 数据接收不完整:放弃当前传输
- 未知数据类型:记录错误并继续运行
开发计划