21 个版本 (11 个稳定版)
4.0.0 |
|
---|---|
2.0.1 | 2024 年 6 月 24 日 |
2.0.0 | 2024 年 5 月 2 日 |
1.5.0 | 2024 年 4 月 12 日 |
0.6.1 | 2023 年 11 月 27 日 |
#216 在 网络编程
4,334 每月下载量
用于 3 crates
195KB
4.5K SLoC
Mainline
简单、健壮、BitTorrent 的 Mainline DHT 实现。
该库旨在成为 Mainline 最好的、最简单的 Rust 客户端,特别是关注可靠和快速的首次响应时间。
它还应作为路由/存储节点工作,并且已经在生产环境中运行数月,没有出现任何问题。然而,如果您运行的是独立的(即小型)DHT,或者面临不寻常的 DoS 攻击,您应该考虑实现 速率限制。
开始使用
查看 示例。
特性
客户端
作为客户端运行意味着您可以在 DHT 上存储和查询值,但不能接受任何传入请求。
use mainline::Dht;
let dht = Dht::client(); // or `Dht::default();`
支持的 BEPs
服务器
作为服务器运行与客户端相同,但您还将响应传入请求并充当路由和存储节点,支持 DHT 的一般路由,并贡献 DHT 的存储容量。
use mainline::Dht;
let dht = Dht::server(); // or `Dht::builder::server().build();` for more control.
支持的 BEPs
速率限制
默认服务器实现没有速率限制,您可以运行自己的 自定义服务器 并应用您自己的速率限制。然而,该限制/阻止将仅适用于 解析传入消息后,并且不会影响处理传入响应。
致谢
此实现得益于以 Webtorrent 的 Bittorrent-dht 作为参考,以及 Rustydht-lib 节省了我大量时间,特别是在 Bencode 消息的序列化和反序列化方面。
依赖项
~3.5–5MB
~97K SLoC