# file_client **Repository Path**: yang-zipengmn/file_client ## Basic Information - **Project Name**: file_client - **Description**: 文件传输项目 旨在为用户提供便捷、稳定的文件传输解决方案,无论是本地与服务器之间的文件同步,还是同一局域网下设备间的文件共享,都能轻松实现。本项目重点实践了 Socket 网络编程、TCP 协议通信及多线程处理技术,具备高兼容性与易用性,可适配 Windows、Linux、macOS 等主流操作系统。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-20 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ 高性能文件传输系统 > 基于 Linux Socket 网络编程与多线程技术实现的轻量级文件传输工具,支持断点续传与高并发处理。 ## 项目介绍 C++ 文件传输系统** 是一款专为高效文件共享设计的命令行工具。本项目采用 **C/C++** 语言开发,底层基于 **TCP/IP 协议**,利用 **Socket** 接口实现网络通信。 项目重点实践了 Linux 系统编程的核心技术,包括 **多线程并发处理 (pthread)**、**文件 IO 操作 (open/read/write)** 以及 **网络字节序转换**。服务端采用“主线程监听 + 子线程通信”的模型,能够同时处理多个客户端的连接请求,确保文件传输的稳定性与高效性。 ## 核心功能 - 多线程并发传输 - 服务端采用 `pthread` 创建通信线程,主线程仅负责监听连接,实现了高并发处理,互不阻塞。 - 批量文件发送 - 支持一次性发送多个文件或文件夹路径,服务端自动遍历参数列表,依次将文件推送给客户端。 - 文件属性封装 - 自定义 `file_info_t` 结构体,在传输文件内容前,先发送文件名、文件大小、权限模式等元数据,确保客户端能准确还原文件。 - 健壮性设计 - 忽略 SIGPIPE 信号:防止因客户端异常断开导致服务端崩溃。 - 接收超时机制:设置 `SO_RCVTIMEO`,避免线程因网络波动无限期挂起。 - 参数校验:启动前自动检测文件是否存在及可读性。 - 高效 IO 传输 - 使用系统调用 `read` / `write` 进行数据搬运,配合 1KB 缓冲区,在保证内存占用的同时提升传输效率。 ## 技术栈 - 核心语言: C / C++ (GCC / G++) - 操作系统: Linux (Ubuntu/CentOS 等) - 核心技术: - 网络编程: Socket API (TCP), `inet_ntoa`, `htons` - 并发编程: POSIX 线程 (`pthread_create`, `pthread_detach`) - 文件操作: 系统 IO (`open`, `read`, `write`, `lstat`) - 信号处理: `signal`, `SIG_IGN` - 构建工具: Make / GCC 命令行 ## 编译与运行 ### 1. 环境准备 确保你的 Linux 环境已安装 GCC/G++ 编译器。 ### 2. 编译项目 使用 GCC 编译源码,并链接 pthread 库: ```bash g++ server.cpp -o file_server -lpthread # 用法: ./file_server <文件路径1> [文件路径2] ... ./file_server ./test_data/file1.txt ./test_data/image.png