主要的 I2P 客户端实现使用 Java。如果您无法在特定系统上使用 Java 或不希望使用 Java,有社区成员开发和维护的替代 I2P 客户端实现。这些程序使用不同的编程语言或方法提供相同的核心功能。
对比表
| Client | Language | Maturity | Actively Maintained | Suitable For | Notes |
|---|---|---|---|---|---|
| Java I2P | Java | Stable | ✅ Yes (official) | General users | Standard full router; includes console, plugins, and tools |
| i2pd | C++ | Stable | ✅ Yes | Low-resource systems, servers | Lightweight, fully compatible with Java I2P, includes web console |
| Go-I2P | Go | Experimental | ⚙️ In development | Developers, testing | Early-stage Go implementation; not yet production ready |
| Emissary | Rust | Experimental | ⚙️ In development | Developers, embedded use | Rust I2P implementation; embeddable router with eepsite, torrent, IRC and email support |
| I2P+ | Java | Stable (fork) | ✅ Yes | Advanced users | Enhanced Java I2P fork with UI and performance improvements |
i2pd (C++)
描述: i2pd(I2P Daemon)是一个用 C++ 实现的全功能 I2P 客户端。它已经稳定用于生产环境多年(大约从2016年开始),并由社区积极维护。i2pd 完全实现了 I2P 网络协议和 API,使其与 Java I2P 网络完全兼容。这个 C++ router 通常作为轻量级替代方案,用于 Java 运行时不可用或不需要的系统上。i2pd 包含一个内置的基于 web 的控制台,用于配置和监控。它是跨平台的,有多种打包格式可用——甚至还有 Android 版本的 i2pd 可用(例如,通过 F-Droid)。
Go-I2P (Go)
仓库: https://github.com/go-i2p/go-i2p
描述: Go-I2P 是一个用 Go 编程语言编写的 I2P 客户端。它是 I2P router 的独立实现,旨在利用 Go 的高效性和可移植性。该项目正在积极开发中,但仍处于早期阶段,功能尚未完备。截至 2025 年,Go-I2P 被认为是实验性的——它正在由社区开发者积极开发,但在进一步成熟之前不建议用于生产环境。Go-I2P 的目标是在开发完成后提供一个现代、轻量级的 I2P router,与 I2P 网络完全兼容。
Emissary (Rust)
网站: https://eepnet.github.io/emissary/
描述: Emissary是I2P协议栈的Rust实现,设计为可嵌入的I2P router。它可以集成到其他应用程序中或独立运行。Emissary支持eepsite托管、种子下载、IRC和电子邮件服务。该项目包含详尽的文档,涵盖快速启动设置、开发者嵌入指南和详细配置。作为一个实验性项目,它正在积极开发中,尚不建议用于生产环境。
I2P+(Java 分支)
描述: I2P+ 是标准 Java I2P 客户端的社区维护分支。它不是用新语言重新实现的版本,而是具有额外功能和优化的增强版 Java router。I2P+ 专注于提供改进的用户体验和更好的性能,同时与官方 I2P 网络保持完全兼容。它引入了刷新的 Web 控制台界面、更用户友好的配置选项,以及各种优化(例如,改进的种子下载性能和更好的网络对等节点处理,特别是针对防火墙后的 router)。I2P+ 与官方 I2P 软件一样需要 Java 环境,因此它不是非 Java 环境的解决方案。然而,对于拥有 Java 环境且希望使用具有额外功能的替代构建版本的用户来说,I2P+ 提供了一个引人注目的选择。这个分支与上游 I2P 发布版本保持同步(其版本号后缀 “+"),可以从项目网站获取。