Skip to content

JJCKA/Node2Node

Repository files navigation

Node2Node

局域网 P2P 文件传输工具 — PC 之间、PC 与手机之间的双向文件传输。完全去中心化,无需安装,无需外网。

基本界面展示

PC端

登录界面:

image-20260513231014555

主界面:

image-20260513231548519

下载文件:

image-20260513231305102

上传文件

image-20260513231349581

通过快捷方式访问手机相册:

image-20260513232039773

安卓端

主界面:

Screenshot_2026-05-13-23-16-30-269_com.node2node.android

下载文件:

Screenshot_2026-05-13-23-23-45-828_com.node2node.android

上传文件:

Screenshot_2026-05-13-23-18-52-055_com.node2node.android

下载记录:

Screenshot_2026-05-13-23-18-07-016_com.node2node.android

功能特性

  • 多设备互联 — PC 之间、PC 与手机之间互相发现和传输文件
  • 双向文件传输 — 支持单文件、多文件、文件夹上传/下载,保留目录结构
  • 文件系统浏览 — 浏览任意设备的文件系统
  • 缩略图预览 — 图片文件自动生成缩略图
  • 快捷路径 — 快速访问常用目录(桌面、文档、手机相册、微信文件等)
  • 传输进度 — 发送方和接收方均显示进度条、传输速度
  • 设备发现 — UDP 广播 + HTTP 注册双机制,自动发现局域网设备
  • 防火墙自动管理 — 运行时自动开放端口,退出时自动关闭
  • 免安装 — PC 端单文件 exe,内嵌 Web UI,原生窗口(Wails + WebView2)

技术栈

平台 技术
PC 端 Go 1.22+ / Wails v2 (WebView2) / 嵌入式 HTTP 服务器 / Web UI (Vanilla JS)
手机端 Kotlin / Jetpack Compose / Material3 / NanoHTTPD
通信协议 HTTP (文件传输) + UDP (设备发现)

快速开始

环境要求

  • PC: Windows 10/11
  • 手机: Android 8.0+ (API 26)
  • 网络: 同一局域网(Wi-Fi 或移动热点)

PC 端

直接运行 exe(推荐)

  1. 下载 release/Node2Node.exe
  2. 双击运行,弹出原生窗口界面
  3. 也可在浏览器中打开 http://localhost:9273

从源码运行

cd pc
go mod tidy
go run ./cmd/node2node -dev      # 开发模式
go run ./cmd/node2node           # 生产模式

编译

release\build.bat
# 或手动编译:
cd pc
go build -tags production -ldflags="-s -w -H windowsgui" -o ../release/Node2Node.exe ./cmd/node2node/

Android 端

  1. 用 Android Studio 打开 android/ 目录
  2. 连接手机,点击 Run

使用流程

  1. 每台 PC 上运行 Node2Node.exe(管理员权限)
  2. 手机打开 Node2Node App,自动发现 PC 或手动输入 IP
  3. 设备间互相发现后,即可浏览和传输文件

项目结构

Node2Node/
├── README.md
├── CHANGELOG.md
├── DOC/                            # 文档
├── assets/                         # Logo 资源
├── release/
│   └── build.bat                   # 构建脚本
├── pc/                             # PC 端 (Go + Wails)
│   ├── cmd/node2node/main.go       # 入口
│   ├── app.go                      # Wails GUI
│   ├── internal/
│   │   ├── server/                 # HTTP 服务器 & API
│   │   ├── transfer/               # 文件传输 & 进度追踪
│   │   ├── discovery/              # UDP 设备发现 & 注册表
│   │   ├── netutil/                # IP 获取 & 防火墙管理
│   │   └── config/
│   ├── web/                        # Web UI (Vanilla JS)
│   └── go.mod
└── android/                        # Android 端 (Kotlin)
    └── app/src/main/java/com/node2node/android/
        ├── data/api/               # Retrofit API
        ├── service/                # HTTP 服务 & UDP 发现
        ├── ui/                     # Jetpack Compose UI
        └── viewmodel/

网络架构

PC-A  ──UDP广播──→  PC-B
  ↑                    ↑
  │    HTTP 注册(回退)   │
  └────────────────────┘
         ↕ HTTP
       手机
  • UDP 广播: 每 3 秒向 255.255.255.255:9274 广播设备信息
  • HTTP 注册: UDP 发现设备后主动向对方注册(解决单向 UDP 不通的问题)
  • 文件传输: HTTP 直连,不经外网

权限说明

PC 端

  • 监听 HTTP 端口 (9273)
  • 读取本地文件系统
  • UDP 广播/监听 (9274)
  • 自动管理 Windows 防火墙规则(需管理员权限)

Android 端

  • INTERNET — 网络通信
  • MANAGE_EXTERNAL_STORAGE — 访问手机全部文件

开发模式

cd pc
go run ./cmd/node2node -dev    # Web 文件从磁盘读取,修改后刷新即可

开发者

JJCKA(ZBH)

许可证

MIT License

About

局域网 P2P 文件传输工具,支持 PC ↔ PC、PC ↔ 手机双向传输文件/文件夹。 PC : Go / Wails v2 / Vanilla JS, 手机 : Kotlin / Jetpack Compose / NanoHTTPD,UDP 自动发现 + HTTP 注册双机制,传输进度实时追踪。完全去中心化,无需外网,双击即用。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors