2010-02-20 59 views
3

我想收集一个文件在新的bittorrent swarm中传播的统计信息,而不需要实际下载任何内容(或尽可能少)。我需要知道哪个节点有哪些部分(基于文件的统计数据)知道播种机和漏洞的数量或百分比是不够的。稍后当有许多同伴时,我需要下载数据以确定它是什么。这部分可以使用普通的torrent客户端来完成。如何从一个bittorrent群收集统计数据?

我不打算自己实施协议,所以我看着2个实现libtorrent和ktorrent的libbtcore。在没有下载的情况下,既不能收集数据,也不能在没有任何可下载的情况下没有连接的对等点。 Libtorrent更简单,但ktorrent看起来更好评论。

我看到3种可能性:

  • 使用一些应用程序正是这一点。有没有?
  • 修改一个torrent实现来做我想要的。有人熟悉他们吗?从哪儿开始?
  • 实现协议的一个小子集。只要定期询问同伴他们有什么。这是可行的吗?或者程序是否需要支持几乎完整的协议?

你有什么建议?

回答

3

这是一个古老的问题,但也许这个答案可能对其他人有用。

  • 确切地为此使用某些应用程序。有没有?

不是我所知道的。

  • 修改洪流实施,做我想做的。有人熟悉他们吗?从哪儿开始?

我只熟悉BitTornado核心(用于例如ABC)。它是用Python编写的,但它是一个架构混乱。

然而,你可以采取任何实施,并开始从不必要的功能剥离它。

  • 实现协议的一个小子集。只要定期询问同伴他们有什么。这是可行的吗?或者程序是否需要支持几乎完整的协议?

请注意,你不能“问”一个同伴他们有什么。另一个同伴告诉你,只要它想要它的碎片(所以它的,而不是)。 BitTorrent握手后,对方可以发送bitfield件。之后它可能会发送HAVE消息,通知您它已经获得了一个新的作品。还要注意,同伴可能会说谎他们拥有的作品。例子包括superseeding peers和像BitThief这样的免费客户端。

如果你想实现协议的一小部分,你需要在最低限度实现BitTorrent握手消息,最好是扩展握手消息。后者允许您接收(并发送)uTorrent PEX消息。 PEX有助于快速发现群中的其他同伴。

为了统计收集的目的,您还需要支持bitfield和HAVE消息。

相关问题