我可能对BitTorrent、DHT和“Swarm”的工作原理缺乏一些基本的了解,因为我甚至不确定DHT和“Swarm”是否是一个整体。
然而,我正在试图找到对等点,对等点的数量,和一些关于一个激流从它的磁铁链接(和散列)的统计数据。
我已经找了一些库来实现这一点,但它们看起来要么过时,要么不相关,要么只是定位以待。
如何连接和请求信息?一个简短的解释将是令人愉快的。

最佳答案

官方规格:http://www.bittorrent.org/beps/bep_0000.html
非官方规格:http://wiki.theory.org/BitTorrentSpecification
BEncoding是bittorrent中用于多种目的的数据序列化格式
dht是一个全局的、分散的、迭代的、基于udp的查找系统,可用于根据infohash定位参与特定群的客户端,infohash可以直接从magnet链接获得,也可以从.torrent元数据文件计算。
如果您有跟踪器的公告url(torrent文件或magnet链接的可选部分),则可以直接从跟踪器获取客户端地址。
一旦你获得了某个特定群的客户地址,你就可以连接到它们——或者如果你已经向DHT/a负责的追踪者宣布了自己的身份,它们就会连接到你——使用bittorrent wire协议,这基本上是一个异步的二进制消息传递协议。
要获得功能完善、最先进的bittorrent客户端,必须实现以下功能:
一个dht节点(udp上的bencoding)
跟踪器通告和擦写协议(使用http上的bencoding和udp上的自定义二进制prtocol)
BitTorrent有线协议(TCP上的自定义二进制协议,带可选扩展层)。有些信息是定格的。避免拥塞的基于UDP的传输协议称为TP也存在于TCP的替代方案中。
torrent文件解析器(显然是bencoding)
一般的东西,如排队活动的种子,文件管理,高度并发的网络IO
据我所知,这是很多ruby没有做过的工作。因此,要么你有很多先见之明,要么你可能想使用用不同语言编写的BitTorrent库(例如libTorrent)或与提供Web服务的客户端接口(例如传输)。

关于ruby - 用ruby连接到洪流“swarm”或DHT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13384994/

10-10 13:13