使用python-libtorrent检索对等列表而不下载torrent

时间:2013-03-14 16:42:11

标签: python libtorrent

我使用libtorrent使用Python搜索对等的torrent的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'

它或多或少有效,但我有两个问题:

  1. 下载了torrent。
  2. 在收到一个对等列表之前,循环执行了几十次。
  3. 你能帮帮我吗?

    非常感谢你。

1 个答案:

答案 0 :(得分:4)

没有一个规范的“同行列表”。您目前正在连接的同伴。然而,“群中的每个同伴”都有。

libtorrent可以告诉你你所连接的对等方,这意味着他们完成了uTP或TCP 3次握手。

通常需要一些时间来增加对等连接。您需要了解有关同行的信息,您需要尝试连接它们,并且需要启动并且没有完整的对等列表。这就是为什么你不能立即与一群同伴联系。

听起来你对群中的所有同伴感兴趣。你不太可能找到每个同伴。同行可能不会向相同的跟踪器宣布,并通过PEX或DHT找到对方。许多同伴不可连接,找到他们的唯一方法就是让他们找到你,他们可能对此不感兴趣。

现在,如果您对下载torrent不感兴趣,还不清楚为什么要使用对等IP。鉴于你不是,为什么要连接它们呢?

你可以简单地调用get_full_peer_list(),但这在python绑定中是不可用的。您也可以一遍又一遍地向跟踪器宣布并收集生成的IP。