goed2k
March 19, 2026 · View on GitHub
goed2k 是一个用 Go 编写的 ED2K/eMule 客户端库,附带一个可交互的终端下载管理器。

AI 参与开发
这个项目主要由 AI 辅助完成,使用的工具包括:
CodexChatGPT 5.4
实现过程中主要参考了仓库内的两个开源项目:
jed2kamule
特性
goed2k 目前已经覆盖了一套可用的 ED2K 客户端基础能力,主要包括:
- ED2K 文件下载
- 多任务并发下载
- 多个 ED2K server 并发找源
-
server.met加载 - KAD bootstrap 和 source 查找
- UPNP 端口映射
- 资源搜索
- 暂停、继续、删除任务
- 状态持久化与恢复
- 上传支持
- 任务、peer、server、piece 状态快照
- 任务进度订阅
- 可交互的终端下载管理器
安装
可执行文件
go install github.com/monkeyWie/goed2k/cmd/goed2k@latest
作为库
go get github.com/monkeyWie/goed2k
快速开始
运行终端下载管理器
goed2k
如果你想直接从源码运行:
go run ./cmd/goed2k
库使用示例
package main
import (
"log"
"github.com/monkeyWie/goed2k"
)
func main() {
settings := goed2k.NewSettings()
settings.ReconnectToServer = true
settings.EnableUPnP = true
client := goed2k.NewClient(settings)
if err := client.Start(); err != nil {
log.Fatal(err)
}
defer client.Close()
if err := client.ConnectServers("176.123.5.89:4725", "45.82.80.155:5687"); err != nil {
log.Fatal(err)
}
if _, _, err := client.AddLink(
"ed2k://|file|example-file.mp3|12345678|0123456789ABCDEF0123456789ABCDEF|/",
"./downloads",
); err != nil {
log.Fatal(err)
}
if err := client.Wait(); err != nil && err != goed2k.ErrClientStopped {
log.Fatal(err)
}
}
License
本项目采用 MIT License。
你可以在保留原始版权声明和许可声明的前提下,自由使用、复制、修改、合并、发布、分发、再许可和销售本项目的副本。项目按“现状”提供,作者不对其适用性或稳定性作任何明示或暗示担保。