V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dvorakchen1
V2EX  ›  问与答

rust-libp2p 用法请教,现阶段迷雾重重

  •  
  •   dvorakchen1 · 2023-09-05 15:12:14 +08:00 · 708 次点击
    这是一个创建于 445 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在学习 P2P 方面的知识,目前在 libp2p 的用法阶段卡住了

    现在使用的是 rust-libp2p ,按照官网的教程,使用 examples/relay-server 的代码部署了一个中继节点在服务器上,地址是:114.132.188.107:2020 (只用于学习目的,20 多天就下线,各位可以调试使用)

    然后按照教程,使用 examples/dcutr 的代码连接中继节点失败,运行命令如下:

    cargo run -- --mode listen --secret-key-seed 42 --relay-address /ip4/114.132.188.107/tcp/2020

    得到错误信息:

    thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Other(Custom { kind: Other, error: Transport(Left(Left(Left(Left(MissingDstPeerId))))) })', examples\dcutr\src\main.rs:248:18
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    error: process didn't exit successfully: `C:\Projects\rustproj\rust-libp2p\target\debug\dcutr.exe --mode listen --secret-key-seed 42 --relay-address /ip4/114.132.188.107/tcp/2020` (exit code: 101)
    

    根据错误信息定位到 248 行:

    Mode::Listen => {
                swarm
                    .listen_on(opts.relay_address.with(Protocol::P2pCircuit))
                    .unwrap();
            }
    

    opts.relay_address 是传入的中继节点的地址,猜测是本地尝试监听中继节点的地址,所以报错。 在这一步我就卡住了,不知道如何继续

    另外,在官网的另一个 example 里面 examples/chat-example 是搭建一个聊天室的例子,但是我看代码里没有使用到中继节点,只能在内网使用。如何改造它,使它连接上中继节点,能在不同网络下使用?

    查找了许多资料一无所获,求教

    1 条回复    2023-09-05 17:08:56 +08:00
    lsk569937453
        1
    lsk569937453  
       2023-09-05 17:08:56 +08:00   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:33 · PVG 03:33 · LAX 11:33 · JFK 14:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.