我可能对 BitTorrent、DHT 和“swarm”的工作原理缺乏一些基本的了解,因为我什至不确定 DHT 和“swarm”是否是一回事。
但是,我正在尝试从其磁力链接(和哈希)中查找对等点、对等点的数量以及一些有关种子的统计信息。
我已经寻找了一些库来实现这一点,但它们似乎已经过时或不相关,或者只是对事物进行了编码。
如何连接和请求信息?一个简短的解释将是令人愉快的。
我可能对 BitTorrent、DHT 和“swarm”的工作原理缺乏一些基本的了解,因为我什至不确定 DHT 和“swarm”是否是一回事。
但是,我正在尝试从其磁力链接(和哈希)中查找对等点、对等点的数量以及一些有关种子的统计信息。
我已经寻找了一些库来实现这一点,但它们似乎已经过时或不相关,或者只是对事物进行了编码。
如何连接和请求信息?一个简短的解释将是令人愉快的。
官方规格: http: //www.bittorrent.org/beps/bep_0000.html
非官方规格:http ://wiki.theory.org/BitTorrentSpecification
BEncoding是在 bittorrent 中用于多种目的的数据序列化格式
DHT 是一个全局的、分散的、迭代的、基于 UDP 的查找系统,可用于根据infohash定位参与特定swarm的客户端,该信息可以直接从磁力链接获得,也可以从.torrent元数据文件计算.
如果您有跟踪器的公告 URL (torrent 文件或磁力链接的可选部分),您可以直接从跟踪器获取客户端地址。
一旦你获得了特定群的客户端地址,你就可以连接到它们——或者如果你已经向 DHT/负责任的跟踪器宣布自己,它们将连接到你——使用 bittorrent 有线协议,它基本上是一个异步的二进制消息传递协议.
要获得功能齐全、最先进的 bittorrent 客户端,您必须实现以下内容:
这是很多工作,据我所知,在 ruby 中还没有完成。因此,要么你有很多事情要做,要么你可能想使用用不同语言编写的bittorrent库(例如libtorrent)或与提供Web服务(例如传输)的客户端接口。