文件传输服务器
这是一个基于 C++ 实现的文件传输服务器,支持接收文本和二进制文件。服务器采用多线程设计,可以同时处理多个客户端连接。
功能特点
- 支持多客户端并发连接
- 支持文本和二进制文件传输
- 自动保持文件原始格式(扩展名)
- 使用时间戳确保文件名唯一
- 跨平台支持(Windows/Linux)
- 实时显示传输进度
- 自动创建存储目录
项目结构
1 2 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 字节整数)
- 发送文件名
- 发送文件内容
注意事项
- 服务器会自动处理文件命名冲突
- 支持任意类型的二进制文件
- 大文件传输时会显示进度信息
- 程序退出时会自动清理资源
错误处理
- 文件创建失败:检查目录权限
- 连接断开:自动清理相关资源
- 数据接收不完整:放弃当前传输
- 未知数据类型:记录错误并继续运行
开发计划