# miniLanDrop **Repository Path**: x_wq3337/mini-lan-drop ## Basic Information - **Project Name**: miniLanDrop - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-06 - **Last Updated**: 2025-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: Rust ## README # 🚀 miniLanDrop **miniLanDrop** 是一个极简、跨平台的局域网文件快传工具,支持自动发现设备、异步高速传输、命令行与 GUI 扩展。 基于 Rust + Tokio,轻量、酷炫、易用! --- ## ✨ 功能亮点 - ⚡ **极速传输**:基于 TCP,8KB 缓冲区并行传输大文件 - 🔍 **自动发现**:UDP 多播自动发现同一局域网内设备 - 🖥️ **命令行交互**:支持设备列表、文件发送等命令 - 🔒 **安全可扩展**:支持加密、断点续传、目录打包等扩展 - 🛠️ **异步架构**:Tokio 驱动,任务互不阻塞 --- ## 🏗️ 架构说明 ### 设备发现 - UDP 多播地址:`239.255.255.250:3000` - 定期广播本机设备信息(ID、名称、IP、端口) - 监听并维护在线设备列表,30 秒无响应自动移除 ### 文件传输 - TCP 端口:`4000` - 传输流程: 1. 发送方 -> 接收方: `RequestFile(filename)` 2. 接收方 -> 发送方: `SendFile(filename, size)` 3. 接收方 <- 发送方: 文件数据(分块传输,8KB 缓冲区) ### 异步架构 - Tokio 异步运行时 - 设备发现、文件传输、命令处理均为独立任务 - 共享状态通过 `Arc>` 管理 --- ## 🚦 快速开始 ### 1. 编译运行 ```bash cargo run --release -- <设备名称> ``` 如未指定名称,自动生成如 `Device-1234`。 ### 2. 单机多实例测试 如果只有一台电脑,可以在不同的终端窗口分别运行多次程序,并为每个实例指定不同的设备名称。例如: ```bash cargo run --release -- Alice ``` 另一个终端窗口: ```bash cargo run --release -- Bob ``` 此时每个实例会监听不同的进程端口,但都能通过本地回环网络(127.0.0.1)进行设备发现和文件传输。你可以在任意一个窗口输入 `list` 或 `send ` 进行测试。 ### 3. 命令行交互 - `list` 列出当前局域网在线设备(运行在8888端口) - `send ` 向指定设备发送文件 - `search --host --port ` 添加设备到传输列表(可选) > **建议**:可集成 [clap](https://github.com/clap-rs/clap) 实现更强大的命令解析。 --- ## 🖼️ 未来扩展 - [ ] **GUI**:基于 egui/iced,图形化显示设备与传输进度 - [ ] **断点续传**:支持大文件中断后继续 - [ ] **目录打包**:自动压缩目录后传输 - [ ] **加密传输**:AES 加密文件内容 - [ ] **性能优化**:零拷贝、并行多文件传输 --- ## 📝 代码片段示例 ```rust // 设备发现广播 let data = serde_json::to_vec(&device).unwrap(); socket.send_to(&data, multicast_addr).await?; // 文件请求与发送 let cmd = TransferCommand::RequestFile(file_path.to_string()); stream.write_all(&serde_json::to_vec(&cmd)?).await?; ``` --- ## 🤝 贡献与交流 欢迎 PR、Issue、建议! Rust 新手也能轻松上手,代码注释详细,欢迎一起打造更强大的局域网快传工具! --- > **miniLanDrop** —— 让文件在你的局域网飞起来!🚀