问题标签 [bittorrent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
353 浏览

network-programming - BitTorrent 是否支持部分传输?

BitTorrent 协议是否可以指定首先需要文件的前 3% 或前 5%?如果没有,添加这样的支持会是对协议的改进吗?

更新:所以我想,如果它是协议的一部分,为什么那里的许多客户不使用它?10分钟后,10%的文件就完成了,但通常你连1%的内容都不能预览……(靠运气)

0 投票
7 回答
39113 浏览

java - Java BitTorrent 库

Java 有没有像样的 BitTorrent 库?我需要编写一个简单的 torrent 客户端,但如果我不必从头开始编写所有内容,那就太好了。

0 投票
1 回答
1525 浏览

php - 如何根据跟踪器收集种子数据?

一遍又一遍地阅读 torrent 规范后,我仍然无法使用 PHP 从 [BitTorrent] 跟踪器收集对等点的数量(例如,种子和水蛭)。

访问服务器完全没有问题。谁能指出我正确的方向?

此处的规范:http ://wiki.theory.org/BitTorrentSpecification#Tracker_HTTP.2FHTTPS_Protocol

0 投票
8 回答
34060 浏览

protocols - 实施 Bittorrent 协议

我正在寻找有关如何逐步实现 bittorrent 协议的教程/博客文章。这个怎么运作?你如何向同行提出请求?并与追踪者交谈。

我不介意编程语言(java、ruby、perl、c#)

0 投票
2 回答
1830 浏览

java - 用java计算bittorent info_hash

我正在尝试计算info_hash种子的价值。我将整个洪流读入StringBuffer,然后将其剪切如下:

我似乎无法获得正确的哈希值。将洪流读入StringBuffer最后会损坏字节字符串吗?我错过了什么吗?

0 投票
1 回答
8010 浏览

get - Bittorrent 跟踪器请求

使用来自的 torrent 文件

我正在计算它的哈希值,它与页面上的哈希值相匹配。

然后我向跟踪器发出请求。像

但我明白了

d14:failure reason63:请求的下载未被授权用于此tracker.e

根据规范,这应该有效吗?

追踪器规格 一般规格

0 投票
1 回答
3098 浏览

java - 用 Java 实现的 Bittorrent Peer Wire 协议

我有几个关于 Bittorrent Peer Wire 协议的问题。我正在尝试使用此规范在 Java 中实现它。

在 Peer Wire Protocol 部分中,它说所有整数都是四字节大端值。AFAIK java使用大端。这是否意味着说如果我想发送窒息消息

扼流圈:<len=0001><id=0>

我只是写到sokcet 1,然后写0吗?

至于我的第二个问题。当请求一块时,我认为多个文件是一个大的连续文件吗?还是考虑单个文件?因为片段长度不会与文件对齐​​,所以一个索引可以同时包含一个文件的结尾和另一个文件的开头?

至于我的最后一个问题,当我打开与对等方的连接并发送我的握手时,我是继续请求片段还是请求然后等待一段时间,看看它是否会向我们请求一些东西?谈话是如何进行的?我主要完成了 http 类型的网络编程,我要求一些东西等待响应。但如果我一直要求件,我将如何发送件?

0 投票
4 回答
1474 浏览

java - 解析可变长度消息

我正在通过这个规范使用 Java 实现 BitTorent 协议。在消息部分中,所有消息都是固定长度的,除了其中 2 个;对于其中一个,这是握手后唯一的可变消息,因此我可以检查其他消息,并在没有其他消息遇到时假设它是一条消息。但是对于以下消息

位域消息只能在握手序列完成后立即发送,并且在发送任何其他消息之前。它是可选的,如果客户端没有片段则不需要发送。

位域消息是可变长度的,其中 X 是位域的长度。有效负载是一个位域,表示已成功下载的片段。第一个字节中的高位对应于片段索引 0。清除的位表示丢失的片段,设置的位表示有效且可用的片段。最后的备用位设置为零。

错误长度的位域被视为错误。如果客户端收到大小不正确的位域,或者位域设置了任何备用位,则客户端应断开连接。

如果我不知道长度,我无法想出解析它的方法;我应该如何在字节流中定位 id ?

编辑:在位域消息的有效负载中是 0 或 1,用于 torrent 文件中的每个片段,消息的长度将根据 torrent 内容的大小而变化。所以我不认为我可以假设件数总是适合 5 字节数。

0 投票
3 回答
641 浏览

social-networking - 如何实现一个安全的分布式社交网络?

我对您将如何实现类似 BitTorrent 的社交网络感兴趣。它可能有一个中央服务器,但它必须能够以对等方式运行,而无需与其通信:

  • 如果整个区域的网络与互联网断开连接,它应该能够将区域内用户的更新传递给彼此

  • 但是,如果某些计算机从中央服务器获取帖子,它应该能够传递它们。

  • 有一定程度的识别;某些计算机可能正在消散不完整/不正确的帖子或执行 DOS 攻击。它应该能够将一些信息描述为来自更受信任的计算机和一些来自不太受信任的计算机。

  • 它理论上应该能够使用任何计算机作为服务器,但是,动态优化网络,以便通常只有具有充足互联网的快速计算机才能作为播种机工作。

  • 网络应该能够扩展到数亿用户;但是,每个特定的人对不到一千个提要感兴趣。

  • 它应该包括一些类似 Tor 的隐私功能。

纯理论问题,虽然受到最近事件的启发:)我确实希望有人实施它。

0 投票
2 回答
253 浏览

ruby - RubyTorrent 问题

我正在尝试创建一个脚本来帮助我在内部 Windows 网络中移动大文件,并希望 Ruby 与 BitTorrent 结合使用是理想的。但是,我的代码似乎并没有真正下载任何东西。

我知道 RubyTorrent 项目已经被放弃了很长时间,所以我希望我的 Stackoverflow 同事之一可以帮助我。

我的代码(到目前为止是):

如您所见,“bt.tracker”行显示为 nil,因此传递 .torrent 文件可能存在问题,但为什么它可以传递文件的其余部分?

任何帮助使它工作将不胜感激。