5

我使用带有 Python 的 libtorrent 搜索以检索对等方的 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. 洪流已下载。
  2. 在我收到一个对等列表之前,循环执行了数十次。

你能帮助我吗?

太感谢了。

4

1 回答 1

7

没有一个规范的“对等列表”。有您当前连接的对等方。然而,“群体中的每个同伴”都有。

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

通常需要一些时间来增加对等连接。您需要了解对等点,您需要尝试连接到它们,并且它们需要启动并且没有完整的对等点列表。这就是为什么您没有立即连接到一堆对等点的原因。

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

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

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

于 2013-03-15T04:02:03.863 回答