p2p、分布式,区块链笔记:libp2p通过libp2p_demo::network实现文件传递功能

代码

  • 代码来自github开源项目file-sharing.rs。主要依赖clap库进行命令行参数解析,使用async_std进行并行操作,使用libp2p_demo::network中的相关方法进行网络建立与文件传输,但是代码量却减少了很多,这是由于libp2p_demo::network对libp2p中的集群事件等相关方法,将文件传递功能进行了集成。
use async_std::task::spawn;
use clap::Parser;
use futures::prelude::*;
use libp2p::core::{
   Multiaddr, PeerId};
use libp2p::multiaddr::Protocol;
use libp2p_demo::network;
use std::error::Error;
use std::io::Write;
use std::path::PathBuf;

#[async_std::main]
async fn main() -> Result<(), Box<dyn Error>> {
   
    env_logger::init();

    let opt = Opt::parse();

    // network::new 返回值是一个元组,包含三个部分:
    // network_client(网络客户端:用于在应用程序的任何位置与网络层进行交互。)、
    // network_events(网络事件流 :用于接收传入请求的事件流)
    // network_event_loop(网络任务驱动:用于驱动网络本身的任务)
    // network::new来自libp2p_demo::network模块,从源代码看其为Swarm::new的进一步封装
    let (mut network_client, mut network_events, network_event_loop) =
        network::new(opt.secret_key_seed).await?;

    // async-std 是一个用于异步编程的库,类似于 tokio
    // async-std::task::spawn()函数会在后台启动一个新的异步任务,允许多个任务同时执行,这样可以提高程序的并发性能。
    // Spawn the network
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值