2010-02-20 56 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消息。

相關問題