java - 将 DHT 和 Torrent Client 拼接在一起

标签 java bittorrent dht torrent kademlia

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

Torrent 客户端库期望在 Torrent 中有一个 announce 或 announce-list 部分,并且不理解“节点”条目。

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

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

有人知道这是怎么回事吗?

最佳答案

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

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

由于您正在使用我的图书馆:您可以使用 PeerLookupTask从 DHT 和 AnnounceTask 中读取 torrent peer 列表将您的种子端口添加到列表中。获得的 IP 和端口必须传递给 torrent 客户端。 GetPeers CLI 命令包含如何使用第一部分的示例。 还有utility methods应该涵盖常见用例。

关于java - 将 DHT 和 Torrent Client 拼接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43690254/

相关文章:

java - JiBX Eclipse 插件未显示在 Rational Application Developer 8 中

python - bittorrent 中的 block 处理

bittorrent - torrent 的最后一段是否对应于最后一个文件的最后一段?

c# - 160位哈希算术运算的最高有效字节是多少?

bittorrent - 什么是 BigUp/libtrt?

java - 如何用图像替换文本中的单词?

java - 我无法使用 GSON 将 JSON 转换为 class<T>

java - 列表到Hashmap来创建API

hash - 种子 info_hash 参数

bittorrent - Bittorrent 客户端中的 DHT 如何获取 "bootstrapped"?