0

我从 Jetty 网络服务器提供文件,这些文件目前通过常规 HTTP GET 下载。

但是,我对 P2P 模型感兴趣,用户可以通过网络种子下载文件。这将如何在带有 libtorrent 的 Jetty 服务器的上下文中实现?

其次,我不想永远在 Jetty 网络服务器上“播种”所有文件,而我只想能够“按需”播种文件。例如,与其盲目地播种种子,我希望在收到请求时(通过 GET 或网络播种或其他方式)让文件可供需求 - 可以在其上“播种”。

我想按需播种或上传,因为我有大量文件,不知道我是否能够同时播种数万个文件。顺便说一句,有人知道可以同时播种的文件数量的上限是多少吗?

4

1 回答 1

2

关于 libtorrent 部分的相关文档在这里:http ://www.rasterbar.com/products/libtorrent/manual.html#http-seeding和规格是http://bittorrent.org/beps/bep_0019.htmlhttp ://bittorrent.org/beps/bep_0017.html(libtorrent 都支持,作为“url 种子”和“http 种子”)。

IIRC、BEP19(webseeds 或 urlseeds)从服务器 POV 相当直接,您不需要在那里做任何特别的事情 - 您只需像处理对该文件的正常 HTTP 请求一样提供文件(所以,您问题的第二部分在这里不太有意义)。

使用 BEP17,您宁愿使用唯一的 http 端点,并通过它获取参数以指定客户端想要的内容(例如,允许更好的节流控制和范围选择)(例如:http ://example.com/seed/?info_hash =X&piece=Y&ranges=Z )。

如果您打算对下载的内容进行更多(编程)控制,则第二种方法更加灵活,但显然需要编写更多代码来处理请求。

同样,从服务器 POV 来看,这与常规 HTTP 事务没有什么不同,这里的“播种”没有什么特别之处。您只需提供文件(每个文件都有自己的 url,直接或通过处理程序)。

对于元数据部分,使用 BEP19,您添加一个“url-list”扩展名(带有文件的完整 url:http ://example.com/seeds/SOMEFILE.txt - 注意多文件种子),而 BEP17 使用密钥“httpseeds”(使用您的端点,例如:http ://example.com/seed/ )。

根据您的 Jetty 是否也处理元数据生成,您可能更喜欢 BEP19 而不是 BEP17,因为您的 url 更可预测/元数据生成更简单......

希望有帮助。

于 2013-01-15T10:06:31.293 回答