目录

Rust libp2p 示例项目

这是一个基于 Rust 和 libp2p 构建的 P2P 网络示例项目,包含多个逐步进阶的示例,从基础的 Ping 节点到完整的文件共享系统。

项目结构

libp2p-example/
├── Cargo.toml              # 工作区配置
├── crates/                 # 子项目目录
│   ├── ping/               # 基础 Ping 节点
│   ├── mdns/               # mDNS 节点发现
│   ├── identify/           # 节点身份识别
│   ├── chat/               # Gossipsub 聊天应用
│   ├── dht/                # Kademlia DHT 集成
│   └── file_share/         # 文件共享系统
├── docs/                   # 文档目录
│   └── readme.md           # 详细教程
└── README.md               # 项目说明(本文档)

项目特点

  • 模块化设计:每个功能独立成 crate,便于学习和理解
  • 逐步进阶:从基础到复杂,循序渐进
  • 完整功能:包含 Ping、节点发现、身份识别、聊天、DHT 和文件共享
  • 详细日志:实时显示网络事件和状态
  • 易于运行:简单的命令即可启动和测试

环境准备

安装 Rust

# 安装最新 Rust 工具链
rustup update
rustup toolchain install stable
rustup default stable

克隆项目

git clone https://gitlink.org.cn/default/libp2p-example.git
cd libp2p-example

运行示例

1. Ping 节点

# 终端 1:启动第一个节点
cargo run --package ping

# 终端 2:启动第二个节点并连接到第一个
cargo run --package ping -- /ip4/127.0.0.1/tcp/<端口>/p2p/<节点ID>

2. mDNS 节点发现

# 在多个终端运行,自动发现本地网络中的节点
cargo run --package mdns

3. Identify 协议

# 运行节点,自动交换节点身份信息
cargo run --package identify

4. 聊天应用

# 在多个终端运行,输入消息开始聊天
cargo run --package chat

5. DHT 集成

# 运行 DHT 节点,支持用户查找
cargo run --package dht

# 可用命令:
# /find <peer_id> - 查找用户
# /nick <nickname> - 设置昵称

6. 文件共享

# 运行文件共享节点
cargo run --package file_share

# 可用命令:
# /files <peer_id> - 请求文件列表
# /get <peer_id> <filename> - 下载文件
# /myfiles - 查看本地文件

技术栈

  • Rust:现代系统编程语言
  • libp2p:P2P 网络库
  • Tokio:异步运行时
  • Tracing:日志系统
  • Serde:序列化/反序列化
  • Chrono:时间处理

学习资源

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT 许可证

关于

这是一个基于 Rust 和 libp2p 构建的 P2P 网络示例项目,包含多个逐步进阶的示例,从基础的 Ping 节点到完整的文件共享系统。

176.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号