在学习 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 是搭建一个聊天室的例子,但是我看代码里没有使用到中继节点,只能在内网使用。如何改造它,使它连接上中继节点,能在不同网络下使用?
查找了许多资料一无所获,求教
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.