#bittorrent #dht #kademlia #torrent

mainline

简单、健壮、BitTorrent 的主线 DHT 实现

21 个版本 (11 个稳定版)

4.0.0 2023 年 9 月 27 日
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网络编程

Download history 725/week @ 2024-04-28 403/week @ 2024-05-05 655/week @ 2024-05-12 647/week @ 2024-05-19 267/week @ 2024-05-26 625/week @ 2024-06-02 284/week @ 2024-06-09 749/week @ 2024-06-16 726/week @ 2024-06-23 1086/week @ 2024-06-30 764/week @ 2024-07-07 855/week @ 2024-07-14 948/week @ 2024-07-21 1059/week @ 2024-07-28 832/week @ 2024-08-04 1491/week @ 2024-08-11

4,334 每月下载量
用于 3 crates

MIT 许可证

195KB
4.5K SLoC

Mainline

简单、健壮、BitTorrent 的 Mainline DHT 实现。

该库旨在成为 Mainline 最好的、最简单的 Rust 客户端,特别是关注可靠和快速的首次响应时间。

它还应作为路由/存储节点工作,并且已经在生产环境中运行数月,没有出现任何问题。然而,如果您运行的是独立的(即小型)DHT,或者面临不寻常的 DoS 攻击,您应该考虑实现 速率限制

API 文档

开始使用

查看 示例

特性

客户端

作为客户端运行意味着您可以在 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