我想从新的bittorrent swarm中传播文件的统计数据而不实际下载任何东西(或尽可能少)。我需要知道哪个对等方有哪些(基于文件的统计数据)知道播种机和leechers的数量或百分比是不够的。后来当有很多同伴我需要下载数据来确定它是什么。这部分可以使用常规的torrent客户端来完成。
我不打算自己实现协议,所以我看了2个实现libtorrent和ktorrent的libbtcore。在没有下载的情况下,两者都没有能够收集数据而没有连接的对等体。 Libtorrent更简单,但ktorrent看起来更好评论。
我看到了3种可能性:
你推荐什么?
答案 0 :(得分:3)
这是一个老问题,但也许这个答案可能对其他人有用。
- 完全使用某些应用程序。有没有?
不是我知道的。
- 修改torrent实现以执行我想要的操作。有人熟悉它们吗?从哪里开始?
我只熟悉BitTornado核心(用于例如ABC)。它是用Python编写的,但它是一个架构混乱。
但是,您可以采取任何实现并开始从不必要的功能中剥离它。
- 实施协议的一小部分。只是定期询问同行他们有什么。这是可行的还是程序需要支持几乎完整的协议?
请注意,你不能“问”同伴他们拥有什么。另一个对等体通知你它想要的东西(所以它是 push 而不是 pull )。在BitTorrent握手之后,对等体可以发送它拥有的bitfield个片段。之后它可能会发送HAVE消息,通知您已获得新作品。还要注意,同龄人可能会对他们所拥有的作品撒谎。示例包括superseeding peers和像BitThief这样的自由客户端。
如果要实现协议的一小部分,则至少需要实现BitTorrent握手消息,最好是扩展的握手消息。后者允许您接收(和发送)uTorrent PEX消息。 PEX可以快速发现群中的其他同伴。
出于统计信息收集的目的,您还需要支持位域和HAVE消息。