# rust_transtorm **Repository Path**: heller_sw/rust_transtorm ## Basic Information - **Project Name**: rust_transtorm - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-09 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件传输工具 (File Transfer) 一个跨机器文件传输工具,支持 TCP、UDP、HTTP 三种协议传输文件。 ## 功能特性 - **多协议支持**: TCP、UDP、HTTP 三种传输协议 - **传输确认**: 文件传输后自动删除源文件(可选) - **校验和验证**: MD5 校验和确保文件完整性 - **配置文件**: 通过 TOML 文件配置服务端口等参数 - **命令行参数**: 灵活的命令行接口 ## 安装 ```bash # 编译项目 cargo build --release # 可执行文件位置 # Windows: target/release/file_transfer.exe # Linux/Mac: target/release/file_transfer ``` ## 使用方法 ### 命令行参数 | 参数 | 说明 | |------------------------|-----------------------------| | `-r, --role <角色>` | 必填:角色选择 `-s` 发送方 / `-r` 接收方 | | `-t, --trans <协议>` | 传输协议:`tcp`(默认)、`udp`、`http` | | `-f, --file <路径>` | 发送方:指定要传输的文件路径 | | `-d, --directory <路径>` | 发送方:监控指定文件夹,新文件自动传输 | | `-H, --host <地址>` | 发送方:目标主机地址(默认:127.0.0.1) | | `-p, --port <端口>` | 发送方:目标端口(可省略,使用配置文件的值) | | `-c, --config <文件>` | 配置文件路径(默认:config.toml) | | `-v, --verbose` | 详细输出模式 | ### 接收方(服务端) ```bash # TCP 模式(默认端口 8080) file_transfer -r r -t tcp # UDP 模式(默认端口 8081) file_transfer -r r -t udp # HTTP 模式(默认端口 8082) file_transfer -r r -t http ``` ### 发送方(客户端) #### 单文件模式 ```bash # TCP 传输 file_transfer -r s -f test.txt -H 127.0.0.1 -p 8080 -t tcp # UDP 传输 file_transfer -r s -f test.txt -H 127.0.0.1 -p 8081 -t udp # HTTP 传输 file_transfer -r s -f test.txt -H 127.0.0.1 -p 8082 -t http ``` #### 文件夹监控模式 监控指定文件夹,当有新文件时自动传输(传输成功后自动删除源文件): ```bash # TCP 模式 - 监控 ./watch_folder 文件夹 file_transfer -r s -d ./watch_folder -H 127.0.0.1 -p 8080 -t tcp # UDP 模式 file_transfer -r s -d ./watch_folder -H 127.0.0.1 -p 8081 -t udp # HTTP 模式 file_transfer -r s -d ./watch_folder -H 127.0.0.1 -p 8082 -t http ``` > 提示: 将文件放入监控目录,程序会自动检测并传输,传输成功后自动删除源文件。 ## 配置文件 配置文件 `config.toml` (和执行文件放在同一个目录) 用于配置服务端端口等参数: ```toml [sender] target_host = "127.0.0.1" protocol = "tcp" [receiver] tcp_port = 8080 udp_port = 8081 http_port = 8082 [transfer] chunk_size = 8192 udp_max_packet_size = 65507 timeout = 300 storage_dir = "./received_files" [logging] level = "info" ``` ## 传输流程 ### TCP/HTTP 协议 1. 客户端连接服务器 2. 发送文件元信息(文件名、大小、MD5校验和) 3. 小文件(<1MB)直接发送数据,大文件分块发送 4. 服务器接收并保存文件 5. 服务器验证校验和并返回结果 6. 客户端收到成功响应后删除源文件 ### UDP 协议 1. 客户端发送握手包 2. 服务器确认准备就绪 3. 客户端分块发送文件数据 4. 客户端发送完成包 5. 服务器确认传输完成 ## 注意事项 1. **文件删除**: 传输成功后会自动删除源文件,请确认后再发送 2. **校验和验证**: 接收的文件会进行 MD5 校验和验证 3. **防火墙**: 确保收发双方的端口已开放 4. **大文件**: UDP 协议对大文件传输有丢包风险,建议使用 TCP ## 示例 ### 完整示例 ```bash # 终端 1:启动接收服务(TCP) $ file_transfer -r -t tcp ======================================== 启动文件接收服务 ---------------------------------------- 协议: TCP 监听端口: 8080 存储目录: "./received_files" 超时时间: 300 秒 ======================================== # 终端 2:发送文件 $ file_transfer -s -f document.pdf -H 127.0.0.1 -p 8080 -t tcp ======================================== 开始文件传输 ---------------------------------------- 文件路径: "document.pdf" 协议: TCP 目标地址: 127.0.0.1:8080 ======================================== [TCP] 接收文件: document.pdf (1048576 bytes) [TCP] 文件已保存: ./received_files/document.pdf [TCP] 文件 document.pdf 接收完成 ======================================== 文件传输成功! 消息: 文件传输成功 校验和: d41d8cd98f00b204e9800998ecf8427e ======================================== 正在删除源文件... 源文件已删除: document.pdf ``` ## 许可证 MIT License