问题标签 [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 投票
10 回答
1518 浏览

c# - 通过向下转换继承树在 C# 中“更宽松”键入

我想问的问题是:

从抽象类内部向下转换继承树(即朝向更专业的类)是可以原谅的,甚至是一件好事,还是它总是一个糟糕的选择,有更好的选择?

现在,为什么我认为它可以用于良好的例子。

我最近在 C# 中从 BitTorrent 协议实现了 Bencoding 。一个足够简单的问题,如何表示数据。我选择这样做,

我们有一个abstract BItem类,它提供了一些基本功能,包括static BItem Decode(string)用于将 Bencoded 字符串解码为必要结构的类。

还有四个派生类,、BString和,表示要编码的四种不同数据类型。现在,这是棘手的部分。和have和accessors 分别允许访问这些数据类型的类似数组的质量。BIntegerBListBDictionaryBListBDictionarythis[int]this[string]

潜在的可怕部分现在来了:

好吧,你明白了……哎呀,这对眼睛来说很难,更不用说大脑了。所以,我在抽象类中引入了一些额外的东西:

现在我们可以将旧代码重写为:

哇,嘿presto,更具可读性的代码。但是我是否只是为了将子类的知识暗示到抽象类中而出卖了我的一部分灵魂?

编辑:作为对一些答案的回应,你完全偏离了这个特定问题的轨道,因为结构是可变的,例如我的例子torrent["info"]["files"][0]["length"]是有效的,但也是如此torrent["announce-list"][0][0],两者都将在 90% 的 torrent 文件中在那里。泛型不是要走的路,至少有这个问题:(。点击我链接的规范,它只有 4 个小点。

0 投票
8 回答
975 浏览

http - 为什么bittorrent没有更普及?

我想这个问题是一个主题的变体,但不同。

Torrent 永远不会取代 HTTP,甚至 FTP 下载选项。这就是说,为什么更多网站上的这些选项旁边没有种子链接?

我正在想象一个网络系统,下载的文件可以通过 HTTP 下载,比如从 下载http://example.com/downloads/files/myFile.tar.bz2,种子可以廉价地自动生成并存储在 中/downloads/torrents/myFile.tar.bz2.torrent,而跟踪器可能是/downloads/tracker/.

跟踪器是一个定义明确的问题,实施起来并不困难,而且已经有许多替代方案。我想定制一个来做这里需要的事情并不难。

自动生成的 torrent 文件可以包含普通的 HTTP 服务器作为永久种子,大多数(如果不是全部)主要 torrent 客户端都很好地支持这样做的扩展,并且不需要在服务器端重新配置或特殊的东西(它使用库存标准 HTTP 范围标头)。

就个人而言,如果我设置了这样的系统,我会将目录速度限制在/downloads/files/合理的范围内,比如 40-50kb/s,具体取决于您要提供的服务。

这样的文件传递系统存在吗?如果这样做,您会使用它吗:用于您的个人、公司或其他网站?

0 投票
4 回答
15292 浏览

php - 用于读取种子文件的 PHP 模块

是否有一个 PHP 模块可用于以编程方式读取 torrent 以查找有关它的信息,例如 Seeders?

0 投票
1 回答
1193 浏览

p2p - 正在寻找一些了解 Bittorrent 的好书/资源?

正在寻找一些好的书籍或技术资源来详细了解 Bittorrent 的工作原理?它可能涉及网络编程、P2P 编程和其他主题的书籍。

0 投票
5 回答
14258 浏览

parsing - 从 torrent 中读取文件集

我想(快速)将程序/脚本放在一起以从 .torrent 文件中读取文件集。然后我想使用该设置从特定目录中删除任何不属于 torrent 的文件。

关于从 .torrent 文件中读取此索引的便捷库有什么建议吗?虽然我不反对它,但我不想为了这个简单的目的深入研究 bittorrent 规范并从头开始滚动大量代码。

我对语言没有偏好。

0 投票
10 回答
92713 浏览

objective-c - 将 NSData 字节转换为 NSString?

我正在尝试使用BEncoding ObjC 类来解码.torrent文件。

当我NSLog torrent得到以下信息时:

如何将其name转换为 NSString?我试过了..

..它检索数据,但之后似乎有额外的 unicode 垃圾:

我也试过(从这里)..

..但这似乎返回了一堆随机字符:

第一种方法(如 Apple 文档中所述)正确返回大部分数据的事实,以及一些额外的字节让我认为这可能是 BEncoding 库中的一个错误。但我对 ObjC 的了解更可能是有过错..

0 投票
5 回答
657 浏览

p2p - 多人游戏的完全/半自治 P2P 网络的可行性如何?

我一直在考虑如何创建一个用于玩多人游戏的 P2P 系统(例如 BitTorrent 用于文件)。这个想法是从多人游戏架构中删除传统服务器。我知道启动通信和发送世界更新等可能需要某种服务器,但我对如何减少服务器上的负载和带宽压力很感兴趣。

顺便说一句,这适用于任何规模的游戏,从两人跳棋游戏到 30 多人的 FPS。

我疯了吗?

0 投票
5 回答
34945 浏览

c# - 一个完全用 C# 编写的 BitTorrent 客户端?

是否有一个用 C# 完全编写(我的意思是完全)编写的 BitTorrent 客户端?我知道用单声道编写的 BitTorrent 客户端,我非常喜欢它。

除了 MonoTorrent 和 BitSharp 之外,是否还有其他开源 BitTorrent 客户端正在开发中?

只是想知道“C# 中的开源比特洪流客户端”会在 C# 程序员中产生多大的兴趣。

编辑:请在http://pumpkintorrent.codeplex.com/上查看 Michael Stum 的南瓜种子

@Michael:感谢分享项目网址。

@Allan:感谢 MonoTorrent ;)

0 投票
1 回答
2598 浏览

search-engine - 你如何建立一个种子文件索引器?

我对像 torrentz.com 这样的搜索引擎背后的技术很好奇。据我观察,它不托管任何 torrent 文件,而是将您连接到其他托管的服务器。

  • 您搜索关键字,它会显示与您的搜索匹配的潜在标题列表。
  • 然后您选择其中一个,它会为您提供另一个托管相应 torrent 文件的潜在服务器列表。

我特别感兴趣的是收集和索引所有内容背后的策略:

他们如何收集然后汇总数据?
它是一个提交基础服务,每个服务器都提交其内容以进行索引吗?
是爬虫算法吗?如果是这样,您甚至如何开始抓取 piratebay.org 之类的网站?
他们是否有权访问这些其他服务器的数据库?

我对 bittorrent 协议的知识和理解不是很详尽,但是我在网上找到的文档更多地指向了构建跟踪器服务所涉及的过程,这并不是我感兴趣的。任何见解和推荐阅读材料表示赞赏。

0 投票
2 回答
2551 浏览

c# - BitSharp / MonoTorrent 扼杀所有同行

我正在编写一个库来通过 bittorrent 下载文件。不会有用户干预。用户将幸福地不知道文件甚至正在被下载。我选择了 BitTorrent 作为传输文件的首选方法,并围绕 MonoTorrent 库构建了应用程序。在我的服务器上,我运行 bttrack python 脚本进行跟踪,并运行 rTorrent 进行播种。

我已成功将 1078 个文件下载到客户端计算机上。然而,有 2 个文件分别没有超过 8% 和 11%。当我使用 uTorrent、BitTorrent 甚至 MonoTorrent GUI 时,文件下载没有任何问题。

除了我自己的以外,所有客户端都可以正常下载。我使用哪个客户端播种并不重要。文件大小或文件名都没有什么异常:

72 359 940b - a05276e5193644d48aaf711242b40a30.ssz

74 448 896b - e5ba856c6115453091d8b82ae53749bd.ssz

第一个文件在我的客户端下载到 7.58% (5.30MB)。第二个文件为 11.42% (8.30MB)。

在 rTorrent(从 rTorrent 播种时)屏幕上,它最初显示状态为 r/ci/un(远程发起的连接/远程客户端阻塞本地客户端,有兴趣下载/本地客户端未阻塞远程客户端,对上传不感兴趣)

当种子到达死锁时,状态变为r/cn/cn(远程发起的连接/远程阻塞本地,对下载不感兴趣/本地客户端阻塞远程,对上传不感兴趣)

转移停在那里,无论我做了什么,我都无法让它继续前进。

我正在使用 MonoTorrent 版本 0.70.0.0,SVN 修订版 134304。

由于客户端都在昂贵的 GSM 连接上,我将种子设置为 0 个上传槽。但即使在测试中,为上传分配插槽也不能解决问题。

我怎样才能让这些客户成为朋友,而不再互相扼杀?

编辑:我还尝试了 monotorrent svn 中的示例客户端。它也只下载上面提到的文件。MonoTorrentGUI 是在旧版本的 MonoTorrent(版本 0.2.0.0)上构建的,它会下载文件,但即使我尝试使用该二进制文件,它也不会通过我的应用程序下载。