标签: bittorrent

BitTorrent磁铁链接如何工作?

我第一次使用磁铁链接.好奇它是如何工作的,我查看了规格并没有找到任何答案.维基说的xt意思是"确切的主题",然后是格式(btih在本例中),带有SHA1哈希.我看到base32提到,知道每个字符5位和32个字符,我发现它只有160位,这正是SHA1的大小.

没有IP地址或任何东西的空间,它只是一个SHA1.那么BitTorrent客户端如何找到实际文件呢?我打开了URL Snooper以查看它是否访问了一个页面(使用TCP)或进行了查找等,但没有任何反应.我不知道客户端如何找到同行.这是如何运作的?

哈希是什么?它是所有文件哈希数组的哈希值吗?也许它是所需的实际torrent文件的哈希值(剥离某些信息)?


在虚拟机中,我尝试了与uTorrent(新安装的)的磁力链接,并设法找到同行.第一个同伴来自哪里?它很新鲜,没有其他种子.

bittorrent magnet-uri

153
推荐指数
5
解决办法
5万
查看次数

BitTorrent:下载无法启动

我正试图在Laravel中实现一个bittorrent跟踪器.但是,由于下载无法启动,我现在卡住了.有一个同伴似乎是播种,我100%确定它是可连接的.但是,当我在另一台机器上运行第二个客户端时,下载将无法启动.它停留在"连接到同行"(uTorrent).

来自跟踪器,当客户发布通知时,我发送以下响应:

d8:intervali1000e12:min intervali300e5:peers18:???i???XÚJU?6e
Run Code Online (Sandbox Code Playgroud)

在下载客户端中,我有以下数据:

在此输入图像描述 在此输入图像描述

这是我的公告代码:

<?php

namespace App\Http\Controllers\Announce;

use App\Helpers\BencodeHelper;
use App\Models\Peer;
use App\Models\PeerTorrent;
use App\Models\Torrent;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Log;

class AnnounceController extends Controller
{
    const __INTERVAL = 1000;
    const __TIMEOUT = 120;
    const __INTERVAL_MIN = 60;
    const __MAX_PPR = 20;

    public function announce(Request $request)
    {
        Log::info($request->fullUrl());
        $status = 200;
        $content = "";
        $passkey = Input::get('passkey');
        $peer_id = Input::get('peer_id');
        $port = Input::get('port');
        $info_hash = Input::get('info_hash');
        $downloaded = …
Run Code Online (Sandbox Code Playgroud)

php bittorrent laravel laravel-5

71
推荐指数
1
解决办法
2596
查看次数

Bittorent客户端的DHT如何"自举"?

如果我有一个没有任何跟踪器的洪流,我刚刚开始了一个比特的客户端,所以我还没有同行...我怎么知道谁在DHT中首先连接?好像我必须知道DHT中至少有一个节点才能开始....

bittorrent dht

68
推荐指数
6
解决办法
3万
查看次数

实施Bittorrent协议

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

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

bittorrent protocols

64
推荐指数
5
解决办法
3万
查看次数

Java BitTorrent库

是否有适合Java的BitTorrent库?我需要编写一个简单的torrent客户端,但如果我不必从头开始编写所有内容,那就太棒了.

java bittorrent

50
推荐指数
3
解决办法
4万
查看次数

将NSData字节转换为NSString?

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

NSData *rawdata = [NSData dataWithContentsOfFile:@"/path/to/the.torrent"];
NSData *torrent = [BEncoding objectFromEncodedData:rawdata];
Run Code Online (Sandbox Code Playgroud)

当我NSLog torrent得到以下内容时:

{
    announce = <68747470 3a2f2f74 6f727265 6e742e75 62756e74 752e636f 6d3a3639 36392f61 6e6e6f75 6e6365>;
    comment = <5562756e 74752043 44207265 6c656173 65732e75 62756e74 752e636f 6d>;
    "creation date" = 1225365524;
    info =     {
        length = 732766208;
        name = <7562756e 74752d38 2e31302d 6465736b 746f702d 69333836 2e69736f>;
        "piece length" = 524288;
....
Run Code Online (Sandbox Code Playgroud)

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

NSData *info = [torrent valueForKey:@"info"];
NSData *name = [info valueForKey:@"name"]; …
Run Code Online (Sandbox Code Playgroud)

cocoa bittorrent objective-c

49
推荐指数
5
解决办法
9万
查看次数

是否可以仅使用HTML(5)和JavaScript构建torrent客户端?

还有更多要补充的内容.是否可以仅使用HTML和JavaScript构建torrent客户端.你不能使用像Java,ActiveX,NaCl这样的东西......如果是的话,请给出高级描述.

我对前端dev没有太多了解,但我认为websockets能够进行网络连接(是否可以将一个客户端连接到另一个客户端,而不需要通过服务器获取所有数据?).我知道您无法使用JavaScript编写文件,所以我认为要下载的文件必须完全保存在内存中,否则客户端必须使用HTML5中的一个新API来存储内容.

html javascript html5 bittorrent websocket

46
推荐指数
5
解决办法
2万
查看次数

在rails应用程序中处理大型文件上传的最佳方法是什么?

我有兴趣了解在Rails应用程序中处理大型文件上传的不同方法,2-5Gb文件.

据我所知,为了传输这种大小的文件,需要将其分解为更小的部分,我已经做了一些研究,这是我到目前为止所做的.

可以像FTP一样恢复所有这些方法,我不想使用FTP的原因是,如果可能的话,我想保留在网络应用程序中吗?我已经使用了carrierwave和paperclip,但我正在寻找能够恢复的东西,因为上传5Gb文件可能需要一些时间!

在我列出的这些方法中,我想说明哪些方法运作良好,如果还有其他方法可能会丢失?如果可能的话,没有插件,宁愿不使用Java Applets或Flash.另一个问题是这些解决方案在上传时将文件保存在内存中,这也是我希望尽可能避免的约束.

bittorrent ruby-on-rails http large-file-upload

39
推荐指数
2
解决办法
2万
查看次数

通过NAT连接P2P?

我开始探索使用p2p连接与其他连接的选项,所以我在JAVA中为Android设备编写了一个简单的套接字程序,其中用户可以共享简单的消息p2p(我当时对NAT没有任何想法).我了解了NAT,所以我现在需要与另一个用户建立TCP连接,该用户使用服务器进行发现,但有效载荷是p2p传输的.我也看了一下XMPP(协议如何工作的一个很好的和详细的说明是这里)和UPnP,但我不知道如何实现它们.

另一个有趣的问题是BitTorrent,因为它们可以在任何设备上工作,甚至可以在NAT后面工作.我无法解释BitTorrent的工作原理.

我研究了很多,但我被卡住了.

我的问题是:

  1. BitTorrent的详细解释(就像这里,不是种子如何工作)以及如何解决NAT问题?
  2. 有没有办法以编程方式进行NA​​T输入?
  3. 套接字编程是否足以支持p2p?
  4. 创建自己的协议有多难,我该如何建立?
  5. 如果两个设备D1和D2想要通信p2p并且他们知道彼此的IP.D1向D2发送请求并且无法通过D2的NAT,但是应该在D1的NAT中创建一个条目.所以当D2尝试发送一些东西时,D1的NAT应该会发现一个带有D2的IP的条目.那么为什么数据包不被它允许呢?

networking p2p bittorrent network-protocols nat

35
推荐指数
4
解决办法
2万
查看次数

如何编写一个简单的Bittorrent应用程序?

如何编写一个简单的bittorrent应用程序.像使用bittorrent库的"hello world",我的意思是最简单的应用程序来理解bittorrent的工作.我更喜欢python或C/C++实现,但它可以是任何语言.平台也不是问题,但我更喜欢Linux.

关于图书馆的建议,我已经从http://sourceforge.net/projects/bittorrent/develop下载了一个(我认为官方bittorrent)的源代码 .但是,我在http://en.wikipedia.org/wiki/Comparison_of_BitTorrent_clients#Libraries上看到了很多其他库.我很感激有关这方面的建议.

如果只有一台笔记本电脑,如何测试应用程序.

c python p2p bittorrent network-programming

34
推荐指数
1
解决办法
3万
查看次数