1

我有两个 java 库。一个连接到 DHT 并可以成功下载 torrent 文件。另一个下载与种子相关的实际数据。

torrent 客户端库需要 torrent 中的announce 或announce-list 部分,并且不理解“nodes”条目。

问题是如何更改 torrent 客户端代码以了解 torrent 文件的“节点”部分。或者我如何从一组 ip:port DHT 对等地址计算跟踪器 URL?

我可以通过猜测端口号并在其上附加 /announce 来猜测 url.. 但这肯定不对吗?

有谁知道这是如何工作的?

4

2 回答 2

2

对于仅 DHT 操作,您不需要通告 URL。如果库本身希望您可以插入一个虚拟 url,则格式dht://<infohash in hex>很常见,但没关系,因为它不会被使用。

另一方面,DHT 部分不需要nodes执行查找,它只是基于 torrent 的 infohash 进行操作。可以选择将节点注入 dht 客户端以进行引导,例如通过对它们执行 ping 操作,但如果它已经被引导,则不需要这样做。一旦 DHT 客户端完成get_peersannounce查找,对等列表可以被注入到 torrent 客户端。

由于您使用的是我的库:​​您可以使用PeerLookupTask从 DHT 和AnnounceTask读取 torrent 对等列表,以将您的 torrent 端口添加到列表中。获得的 IP 和端口必须传递给 torrent 客户端。GetPeers CLI 命令包含如何使用第一部分的示例还有一些实用方法应该涵盖常见的用例。

于 2017-04-29T09:59:43.520 回答
1

作为替代方案,我可能会建议您查看 Bt,它是一个 Java 8 BitTorrent 客户端,并且已经与 the8472 的 mldht 集成:https ://github.com/atomashpolskiy/bt

于 2017-05-07T07:31:05.900 回答