5

Python で libtorrent を使用して、トレントのピアの IP を検索して取得します。私はコードで試してみます:

import libtorrent as lt
import time

ses = lt.session()
ses.listen_on(6881, 6891)
info = lt.torrent_info('test.torrent')
h = ses.add_torrent({'ti': info, 'save_path': './'})
print 'starting', h.name()
while (not h.is_seed()):
    s = h.status()
    p = h.get_peer_info()
    for i in p:
        print i.ip

    print "\n\n"

    sys.stdout.flush()

    time.sleep(1)

print h.name(), 'complete'

多かれ少なかれ機能しますが、2つの問題があります。

  1. トレントがダウンロードされます。
  2. 1 つのピア リストを受け取る前に、ループが何十回も実行されます。

手伝って頂けますか?

どうもありがとう。

4

1 に答える 1

7

標準的な「ピアリスト」はありません。現在接続しているピアがあります。ただし、「群れのすべてのピア」があります。

libtorrent は、接続しているピアを教えてくれます。これは、ピアが uTP または TCP の 3 ウェイ ハンドシェイクを完了したことを意味します。

通常、ピア接続を立ち上げるにはある程度の時間がかかります。ピアについて調べる必要があり、それらに接続しようとする必要があります。また、それらが稼働していて、完全なピア リストを持っていない必要があります。これが、多数のピアにすぐに接続できない理由です。

スウォーム内のすべてのピアに関心があるようですね。すべてのピアを見つける可能性はあまりありません。ピアは同じトラッカーにアナウンスしない場合があり、PEX または DHT を介してお互いを見つけます。多くのピアは接続できず、それらを見つける唯一の方法は、彼らが興味を持っていない可能性があるあなたを見つけてもらうことです.

トレントのダウンロードに興味がないのに、なぜピア IP が必要なのかは明らかではありません。あなたがそうではないことを考えると、なぜそれらに接続するのですか?

単純に get_full_peer_list() を呼び出すこともできますが、これは Python バインディングでは利用できません。トラッカーに何度もアナウンスして、結果の IP を収集することもできます。

于 2013-03-15T04:02:03.863 に答える