
这次我们来看一个非常实用的开源项目LocalSend。它不是一个 AI 模型也不是图像生成工具而是一个本地文件传输工具。简单说它能让你的手机、电脑、平板在同一个局域网内互传文件不需要数据线、不需要登录账号、也不依赖任何外部服务器。很多人第一次用它的感受是原来跨平台传文件可以这么直接。LocalSend 的核心特点可以归纳为几个点第一完全开源代码托管在 GitHub 上采用 GNU GPL v3 许可第二跨平台支持覆盖 Windows、macOS、Linux、Android、iOS甚至支持通过命令行在无图形界面环境使用第三不依赖互联网依靠局域网 P2P 通信用 HTTPS 加密传输第四即开即用不需要注册账号打开应用就能发现同一网络下的设备第五支持批量发送文件、文件夹和文本。这篇文章我会带你做几件事先看 LocalSend 的核心能力和适用场景再给出本地部署的环境准备和安装步骤然后演示文件发送、批量任务、设备发现等实际测试流程最后补充接口调用、网络排错和最佳实践。如果你经常在手机和电脑之间传文件或者需要在多台设备之间搭建一个不受网速限制的传输通道这篇文章值得收藏。1. 核心能力速览先给一张总表快速知道 LocalSend 的定位和门槛。能力项说明项目类型本地局域网文件传输工具开源协议GNU GPL v3开源免费主要功能跨平台文件互传、文件夹传输、文本发送、设备发现支持平台Windows、macOS、Linux、Android、iOS是否需要服务器不需要局域网 P2P 直连传输加密HTTPS 加密通信启动方式图形界面启动 / 命令行启动是否支持 API支持 HTTP API可供脚本调用是否支持批量任务支持多文件、多文件夹批量发送硬件要求极低普通电脑和手机均可运行适合场景局域网文件共享、跨设备快速传输、无互联网环境从这张表能看出来LocalSend 的门槛几乎可以忽略。它不挑显卡、不挑 CPU只要设备能联网局域网就能跑起来。2. 适用场景与使用边界LocalSend 解决的是一个很具体的问题当你需要在两台设备之间传文件却发现网盘上传下载太慢、微信压缩画质、U 盘找不到、数据线不兼容时一个局域网直连方案是最省事的。适合场景主要包括办公室内多台电脑和手机之间互传文档、图片、安装包。家庭局域网内把手机照片批量传到电脑。无互联网接入的内网环境比如临时搭建的测试网络。需要在 Linux 服务器和本地电脑之间传文件但不想配置 FTP 或 SMB。跨操作系统传输比如 iPhone 和 Windows 电脑之间互相传文件。使用边界也需要说明LocalSend 的传输依赖两台设备处于同一个局域网。如果两台设备一个在公司网络、一个在家用 Wi-Fi就不能直接互通。它不适合作为公网远距离文件传输工具。另外虽然它实现了设备发现和加密传输但在公共 Wi-Fi 环境下使用时仍然建议注意接收设置避免陌生设备向你的设备发送文件。默认情况下接收方需要确认接收这层机制能避免不必要的文件写入。如果是团队使用建议约定好设备名称方便快速识别。关于合规方面通过 LocalSend 传文件时传输内容本身不经过第三方服务器但发送方仍需对文件内容负责不要传播违法或侵权内容。3. 环境准备与前置条件LocalSend 的部署比大多数本地工具都简单。先明确需要准备什么环境。3.1 操作系统要求从官方支持情况看LocalSend 提供了 Windows、macOS、Linux、Android、iOS 的安装包。也就是说只要你的设备属于这几类系统都能直接安装。Linux 环境下还提供了 AppImage、Deb 包以及命令行工具版本。如果你用的是 Ubuntu 或 Debian 系系统用 deb 包安装最方便如果你在服务器上只有终端环境可以选择命令行版本。3.2 网络要求LocalSend 的核心机制是局域网发现和 P2P 传输因此网络需要满足发送端和接收端在同一个局域网例如连接同一个路由器。设备之间允许 UDP 广播或组播用于设备发现。防火墙放行 LocalSend 使用的端口。默认情况下LocalSend 会监听一个本地端口用于 HTTPS 通信同时在局域网内广播自己的存在。如果两台设备互相看不到优先检查防火墙和 AP 隔离。这里重点提醒很多办公 Wi-Fi 或访客网络会开启“AP 隔离”也就是连接同一 Wi-Fi 的设备互相不能通信。遇到这种情况要么换网络要么在路由器上关闭 AP 隔离。3.3 硬件要求LocalSend 是 Flutter 开发的跨平台应用资源占用很低。普通办公电脑、几年前的旧手机都能流畅运行。传输速度主要取决于你的局域网带宽和路由器性能。如果你的路由器是百兆口那么传输速度上限大概在 10MB/s 左右如果是千兆路由器配合千兆网卡速度可以跑到更高。想测出最快速度建议优先使用 5G Wi-Fi 或有线网络。4. 安装部署与启动方式安装 LocalSend 的方式取决于你的设备类型。下面分别说明。4.1 Windows / macOSWindows 用户可以直接从项目 GitHub Releases 页面下载安装包。下载后双击运行一路下一步即可。macOS 用户下载 dmg 文件后拖入 Applications 目录即可。安装完成后打开 LocalSend应用会自动开始在本机监听端口并周期性广播设备信息。界面默认会显示一个你的设备名称你可以自由修改方便局域网内其他设备识别。4.2 Linux 图形界面版本如果你用的是 Ubuntu 或 Debian 系可以下载 deb 包安装# 下载 deb 包后执行安装注意替换实际文件名 sudo dpkg -i localsend_*.deb # 如果提示依赖缺失可以执行 sudo apt-get install -f如果你用的是其他 Linux 发行版可以选择 AppImage 版本下载后赋予执行权限再运行chmod x LocalSend-*.AppImage ./LocalSend-*.AppImage4.3 Linux 命令行版本如果服务器没有图形界面可以使用命令行版本。这种方式很直接适合脚本调用和无人值守部署。命令行版本启动方式如下# 直接启动命令行服务默认会在终端输出设备信息和端口 localsend命令行版本具体支持的参数以你所下载版本为准。通用思路是先启动服务看到监听端口后通过 HTTP API 进行文件发送操作。这种方式比图形界面更适合集成到自动化流程中。4.4 Android / iOS手机端在应用商店搜索 LocalSend 即可安装也可以手动从 GitHub Releases 下载 APK。安装后打开应用授予必要的存储权限。手机端和电脑端只要在同一个局域网名称就会互相出现在设备列表里。4.5 启动后的界面和端口检查无论用哪种方式启动启动后都可以通过以下方式确认服务状态# 查看 LocalSend 相关的端口监听信息 # Windows 用 netstatLinux/macOS 用 netstat 或 lsof netstat -an | grep LISTEN # 或者使用 lsof 查看进程打开的端口 lsof -i -P | grep -i local如果看到 LocalSend 进程在监听一个本地端口说明服务启动成功。不同版本默认端口可能不一样以实际打印为准。如果端口被占用可以在设置里修改端口后重启应用。5. 功能测试与效果验证安装完成后接下来做实际功能测试。这里给出一套可以从零开始验证 LocalSend 的流程。5.1 设备发现测试测试目的确认两个设备能否在局域网内互相发现。操作步骤打开设备 A 和设备 B 的 LocalSend。确认两台设备连接同一个 Wi-Fi。观察 LocalSend 主界面是否出现对方设备名称。预期结果设备列表中出现对方设备名称对应、在线状态正常。判断标准如果互相能看到设备说明 UDP 广播和端口通信正常。如果看不到优先检查防火墙、AP 隔离、端口设置。常见失败原因防火墙没有放行 LocalSend 的端口或者路由器开启了客户端隔离。5.2 小文件发送测试测试目的验证基础的文件传输链路是否可用。操作步骤在设备 A 上点击发送文件选择一张小图片。选择设备 B 作为接收方。设备 B 弹出接收确认框点击接收。查看文件是否保存到指定目录。判断标准文件完整保存大小不变。建议用校验和验证# 发送前和接收后分别计算文件哈希对比是否一致 md5sum 原文件 接收文件如果哈希不一致说明传输过程中出现了数据损坏这种情况非常少见一旦出现优先怀疑网络不稳定或磁盘空间不足。5.3 大文件与文件夹传输测试测试目的验证大文件和文件夹批量传输的稳定性。操作步骤在设备 A 上选择包含多个文件的文件夹。发送到设备 B。观察传输进度、速度和时间。完成后检查文件夹内文件数量和大小。预期结果文件夹层级结构被完整保留文件数量一致。判断标准目录结构一致、文件数量一致、文件大小一致。这里需要特别关注性能如果传输速度远低于你的路由器带宽上限可以尝试将两个设备都改成有线连接或者把 Wi-Fi 频段切换到 5G。2.4G 频段的实际吞吐量容易受干扰速度波动较大。5.4 文本发送测试测试目的验证文本快速传递功能。操作步骤在设备 A 上选择发送文本。输入一段文字发送到设备 B。设备 B 接收后查看文本内容。这个功能适合快速传递连接地址、Wi-Fi 密码等短文本。注意文本作为内容发送后接收方可以直接在 LocalSend 中复制这比在聊天软件里发给自己更直接。5.5 接收方式测试测试目的验证不同接收策略是否有效。LocalSend 在接收设置里通常会提供几种模式例如手动接收、快速接收、拒绝接收。手动接收模式更适合安全要求高的网络快速接收模式可以自动保存到预设目录适合自己信任的设备之间频繁传输。实际操作时先用手动接收确认链路再切换到快速接收提升效率。判断标准不同模式下文件都能正确保存且保存目录符合预期。6. 接口 API 与批量任务LocalSend 提供了 HTTP API这意味着可以写脚本调用它的发送能力从而实现自动化批量传输。这对于需要频繁向多台设备分发文件的场景很有用。6.1 API 通用概念LocalSend 的 API 遵循 REST 风格默认通过 HTTPS 提供服务。因为采用的是 HTTPS 自签名证书所以脚本调用时通常需要关闭证书校验仅限测试环境。接口访问路径以/api/v1/开头具体端点和参数需要以你安装版本的源码为准。一个通用的请求模型是发送方通过 API 提交接收方设备标识、文件信息。接收方确认后发送方通过 HTTP 上传文件内容。传输完成后API 返回结果。6.2 Python 调用示例下面给出一段通用 Python 脚本模板用于发现局域网内的 LocalSend 设备并向其发送文本或文件。实际使用时需要根据项目源码中的接口定义调整路径和参数。import requests import json # 关闭 HTTPS 证书校验警告 import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) base_url https://127.0.0.1:53317 # 1. 获取本机设备信息 info_response requests.get(f{base_url}/api/v1/info, verifyFalse) print(设备信息:, info_response.status_code, info_response.text) # 2. 发送文本的通用构造示例具体字段以实际版本为准 payload { text: hello from script, receiver: target-device-id } # 3. 请求发送接口 send_response requests.post( f{base_url}/api/v1/send, jsonpayload, verifyFalse, timeout30 ) print(发送结果:, send_response.status_code, send_response.text)注意上面的53317是一个常见端口示例不同版本可能不同务必以你启动服务时终端打印的端口为准。receiver字段的值也需要从设备发现阶段获取。6.3 批量任务设计思路如果你想用 LocalSend 做批量文件分发建议这样设计任务队列import os import time import requests # 任务目录 task_dir ./tasks for filename in os.listdir(task_dir): file_path os.path.join(task_dir, filename) if not os.path.isfile(file_path): continue # 构造发送请求 payload { receiver: target-device-id, file: file_path } # 发送并打印结果 try: response requests.post( https://127.0.0.1:53317/api/v1/send, jsonpayload, verifyFalse, timeout60 ) print(f{filename} - {response.status_code}) except Exception as e: print(f{filename} - 失败: {e}) time.sleep(1)批量任务的核心是记录每个任务的发送结果失败任务单独重试不要中途退出。更稳妥的方式是把所有任务写入一个 CSV 文件逐行读取、逐行执行、逐行记录结果。6.4 失败重试建议设置单次请求超时时间避免任务卡死。对失败的请求做最多 3 次重试。每两个请求之间加一个小间隔避免接收方处理不过来。完整记录日志包括文件路径、大小、发送时间、接收方设备、返回码。7. 资源占用与性能观察LocalSend 不占显存也不吃 CPU因此这里主要观察内存占用、传输速度和网络吞吐量。7.1 内存占用在 Windows 上打开任务管理器在 Linux 上使用htop或free观察 LocalSend 进程的内存占用。正常情况下一个空闲的 LocalSend 进程占用内存应该在几十 MB 到一两百 MB 之间。如果内存用量异常高可以怀疑是发送超大文件列表时产生了过多的进程内缓存这时候重启应用通常能释放。7.2 传输速度观察传输速度受以下因素影响路由器 LAN 口速率百兆口上限约 10MB/s千兆口上限约 100MB/s。Wi-Fi 频段5G 频段吞吐量通常高于 2.4G。信号强度距离路由器越远速度衰减越明显。磁盘读写速度机械硬盘写大文件时容易成为瓶颈。如果你发现速度远低于预期可以用 iperf3 之类的工具先测一下局域网本身的速度再用 LocalSend 传文件做对比。这样能快速定位是 LocalSend 的问题还是网络本身的问题。7.3 如何降低资源占用如果要在低配设备上使用 LocalSend建议关闭不必要的接收模式减少后台扫描频率。避免同时发送大量文件分批处理。使用有线网络连接降低 Wi-Fi 带来的延迟和重传。8. 常见问题与排查方法下面是 LocalSend 使用过程中比较常见的问题和排查思路。问题现象可能原因排查方式解决方案设备互相发现不了不在同一局域网或 AP 隔离开启查看两台设备 IP 是否在同一网段连接同一 Wi-Fi关闭 AP 隔离设备能发现但发送失败防火墙拦截端口检查防火墙日志临时关闭防火墙测试放行 LocalSend 使用的端口传输速度很慢Wi-Fi 信号弱或路由器百兆口用 iperf3 测局域网速度切换 5G Wi-Fi使用有线连接文件不完整网络不稳定或磁盘空间不足对比文件哈希清理磁盘重新发送提示端口被占用其他应用占用了 LocalSend 的端口查看监听端口在设置中修改端口并重启命令行版本找不到设备设备发现依赖 UDP 广播部分网络会过滤广播包查看终端日志改用服务器地址直连方式接收方没有弹窗接收策略设为了拒绝或静默模式检查接收设置切换为手动接收或快速接收常见的启动问题还有一类Linux 命令行版本启动时提示缺少某些依赖库。例如缺少libsecret或libnotify相关的库可以通过发行版的包管理器安装。由于不同发行版依赖名不同这里不写死命令建议根据报错信息搜索对应的包名。如果发送方和接收方都开启了防火墙务必两边都放行 LocalSend 的端口否则会出现“能发现但连不上”的情况。9. 最佳实践与使用建议9.1 设备命名规范在团队环境中强烈建议给每台设备设置清晰的名字。LocalSend 允许自定义设备名称不要在设备列表里出现一堆默认名字否则发送时很容易选错接收方。建议格式姓名-设备类型-位置例如zhangsan-laptop-office。9.2 接收目录统一管理在接收方设备上把 LocalSend 的保存目录设置为统一目录例如D:\LocalSend\received或~/Downloads/LocalSend。这样可以避免文件散落到系统各处也方便后续批量整理。9.3 批量任务日志化如果你通过 API 做批量分发一定要保留日志。日志字段至少包括文件名。文件大小。发送时间。接收方设备名。发送结果。有了日志才能快速从失败任务中恢复而不是靠记忆判断哪个文件已经发了。9.4 安全边界回到开头那句话LocalSend 传输不经过服务器但传输内容由发送方负责。不要通过 LocalSend 发送含有隐私数据的明文文件除非接收方是你完全信任的设备。在公共网络下建议保持手动接收模式避免陌生设备向你推送文件。如果传输内容比较敏感建议传输前先压缩加密或者采用更专业的加密传输方案。9.5 更新维护LocalSend 是活跃维护的开源项目功能迭代比较快。建议安装时从官方 GitHub Releases 页面下载最新版本或者通过系统包管理器关注更新。定期更新可以修复已知问题也能获得更好的性能和稳定性。10. 总结与下一步LocalSend 的价值在于它把“局域网文件传输”这件事做得足够简单直接开源、跨平台、无需服务器、无需登录、加密传输、批量发送。它的上手成本极低安装后打开就能用不怎么需要折腾环境。如果你是第一次接触这个工具我建议你先做一次最小验证在一台电脑和一台手机上安装 LocalSend连同一个 Wi-Fi传一个小文件。这个过程大概率不超过五分钟。跑通之后再逐步验证文件夹发送、文本发送、接收策略调整最后根据你的需要尝试命令行或 API 方式。最容易踩的坑有两个一是设备和设备之间互相看不到基本就是网络问题先查 AP 隔离和防火墙二是传输速度不理想需要先确认路由器本身的速度上限而不是直接怀疑工具。这两个问题排掉之后LocalSend 的使用体验会非常稳定。接下来可以继续研究的方向包括把 LocalSend 接到自己的自动化脚本中用 API 实现定时批量分发文件或者在团队内部约定统一的设备命名和接收目录把它当成内网文件分发的基础设施来用。这个工具值得收藏备用特别是经常需要在多设备间传文件的人。你不需要记住太多操作细节只要知道有这样一个工具存在下次遇到跨设备传文件的场景时它会比网盘和数据线都更省心。