问题标签 [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.
java - Java 线程性能
我正在开发一个 bittorrent 客户端。在与同行交流时,我与他们交流的最简单方法是为每个人生成一个新线程。但是,如果用户想与大量对等点保持连接,我会导致我产生大量线程。
我想到的另一种解决方案是让一个线程遍历对等对象并运行它们一段时间。
我主要在 ruby 中检查了其他库(我的是在 java 中),它们为每个新对等点生成一个线程。如果用户将连接数设置为 100 或 200 之类的高数字,您认为生成一个线程会降低性能吗?
c# - BitTorrent 跟踪器宣布问题
我一直在写一个 BitTorrent 客户端,主要是出于好奇,但部分是出于提高我的 c# 技能的愿望。
我一直使用理论维基作为我的指南。我已经建立了一个处理 BEncoding 的类库,对此我很有信心;基本上是因为完整性检查是在解析后立即从我的内部表示中重新生成原始 .torrent 文件,然后进行哈希和比较。
下一阶段是让跟踪器宣布工作。在这里我遇到了一个绊脚石,因为跟踪器拒绝了我的请求而没有非常有用的错误消息。
以最新的堆栈溢出数据库转储为例。我的代码生成以下宣布 URI:
跟踪器对我的代码的响应:
跟踪器对该字符串的响应放入 Chrome 的地址栏中:
peer_id 是(有效的)垃圾,但将其更改为合理的(模拟广泛使用的客户端)并不会改变任何内容。
就像我说的那样,我很确定我正在正确地提取信息字典并像我应该的那样进行散列(SHA1),并且对等 id 格式正确。
我的猜测是我在做一些愚蠢的小事,如果能帮助我找出它的确切含义,我将不胜感激。
很难猜测什么代码是相关的(而且要发布的内容很多)。但是,我会尝试发布任何要求的内容。
编辑
我没有对 info_hash 进行十六进制编码,这有帮助。
这是获取生成 URI 并尝试获取响应的代码:
flash - Flash 洪流客户端
是否有任何此类基于网络的 Flash Torrent 客户端免费/商业可用?
bittorrent - Bittorent 客户端中的 DHT 如何被“引导”?
如果我有一个没有任何跟踪器的 torrent,并且我刚刚启动了一个 bittorent 客户端,所以我还没有同伴……我怎么知道在 DHT 中首先与谁联系?看来我必须至少知道 DHT 中的一个节点才能开始......
php - 如何计算种子种子和同伴?
如何为 torrent 跟踪站点创建播种器和对等计数器?
flash - Adobe Air - BitTorrent?
有没有人有使用 Adobe Air 创建 BitTorrent 应用程序的经验?
目前有这方面的参考吗?
请尽可能地提供更多的资料。
linux - wget-like bittorrent 客户端或库?
有没有我可以像 wget 或 curl 一样使用的 bittorrent 客户端或 (Java|Python|Ruby|Perl) 库?
我想简单地用作脚本中的一个步骤,就像您使用 wget 一样。
编辑:对不起,我应该提到我正在使用 Ubuntu。
python - How to calculate the scrape URL for a torrent
I've read the Bit-torrent specification and done a number of searches, trying to find out how I can get the seeds/peers/downloaded data from a torrent tracker (using Python). I can calculate the info hash from a Torrent no problem, which matches up with the info hash given by various working torrent applications.
However, when I try to get the information from the tracker I either timeout (the tracker is working) or get empty data, depending on what form I put the URL in:
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558 - timeout
I was told that this should be 20 characters long, so took a substring, but this gives empty data.
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462 - d5:filesdee
I think I have misunderstood something with how I should encode or make the infohash for the scrape URL, but can't for the life of me see where.
c# - 创建一个对象的新实例,还是修改现有的?
为了好玩,我正在尝试在 C# 中创建一个 BitTorrent 库作为一个辅助项目。但是,我遇到了一个设计问题,如果我现在不解决它可能会在以后产生问题。
我目前有一个PeerGreeter
类,它使Socket
任何尝试连接到我的对等方处于侦听状态,以便在 torrent 中为我提供文件。当一个对等点连接时,欢迎者交换握手,确保一切都有效,然后触发一个PeerConnected
事件,并将相关的Socket
握手信息作为处理程序参数。
我的Torrent
类是单个 torrent 及其所有职责的表示,有两个列表,其中包含 swarm 中的所有对等点(封装在一个Peer
对象中),连接和断开连接。当欢迎程序触发PeerConnected
事件时,实例会在断开连接列表中Torrent
找到对应的。Peer
如果找到了,它会将其移动到连接列表中,并将其实例中Connection
的类型属性设置为由欢迎程序创建的。该属性是具有访问修饰符的自动属性:Socket
Socket
{ get; internal set; }
我遇到的问题是,据我所知,这不是线程安全的。如果一个线程正在处理 a 的连接Peer
,然后另一个线程以某种方式修改该连接对象,或者将其丢弃,则可能会产生问题。我考虑过将Connection
属性的设置器的访问修饰符设置为private
,并将其设置在构造函数中,但问题是我需要创建一个新对象来替换Peer
断开连接列表中的占位符以将其添加到连接列表中。
我的问题是我应该坚持将 setter 设置为internal
,还是private
使用全新的实例替换占位符也是一种好方法?
networking - 了解 Bittorrent 协议
我正在寻找一些书籍、教程网站。
我想了解 Bittorrent 协议是如何工作的,然后再实现我自己的 tracker 。
我对网络协议没有太多了解,所以我正在寻找新手的东西。
看过以下帖子,但他们没有帮助我解决我的问题:
感谢帮助 。