标签: bittorrent

Bittorrent跟踪器请求

使用来自的torrent文件

http://torrent.ubuntu.com:6969/
Run Code Online (Sandbox Code Playgroud)

我正在计算其与页面上的哈希匹配的哈希值.

然后我向跟踪器发出请求.喜欢

http://torrent.ubuntu.com:6969/announce?info_hash=9a81333c1b16e4a83c10f3052c1590aadf5e2e20
Run Code Online (Sandbox Code Playgroud)

但我明白了

d14:失败原因63:请求下载未被授权与此跟踪器一起使用

根据规格,这应该工作?

跟踪器规格 一般规格

bittorrent get request tracker

6
推荐指数
1
解决办法
6463
查看次数

你知道使用Bittorent发送/接收文件的Python库吗?

我有大文件移动到很多服务器.现在我们使用rsync,但我想尝试使用bittorent.

我正在研究Deluge的代码,这是一个Python bittorent客户端,但它使用扭曲并且非常复杂.你知道什么高水平吗?

编辑:我刚刚看到Facebook使用Bittorent进行代码部署.也许他们为此发布了他们的lib,但我找不到它.听说过吗?

python bittorrent

6
推荐指数
1
解决办法
831
查看次数

获取获取洪流种子和同伴的刮擦请求

我一直试图创建一个洪流网站,但我坚持以下.如何发送洪流刮取请求以获取其播种机和leechers?

我有一个PHP类函数,它提供了我的通知列表.

public function getTrackers() {
    // Load tracker list
    $trackerlist = array();

    if ( $this->torrent->get_value('announce-list') )
    {
        $trackers = $this->torrent->get_value('announce-list')->get_plain();
        while ( list( $key, $value ) = each( $trackers ) )
        {
            if ( is_array( $value->get_plain() ) ) {
                while ( list( $key, $value2 ) = each( $value ) )
                {
                    while ( list( $key, $value3 ) = each( $value2 ) )
                    {
                        array_push( $trackerlist, $value3->get_plain() );
                    }
                }
            } else {
                array_push( $trackerlist, $value->get_plain() );
            }
        }
    } …
Run Code Online (Sandbox Code Playgroud)

html php bittorrent utorrent

6
推荐指数
1
解决办法
5777
查看次数

使用bittorrent协议分发夜间和CI构建

这个问题继续从我昨天的问题中学到的,即使用git分发夜间版本.

在上述问题的答案中,很明显git不适合我的需要,并鼓励使用BitTorrent重新检查.


精简版

需要每天早上向70多人分发每晚构建,想使用git BitTorrent来平衡转移.

长版

NB.如果您已阅读我之前的问题,可以跳过以下段落.

每天早上我们都需要将我们的夜间版本分发给70多人(艺术家,测试人员,程序员,制作人员等)的工作室.到目前为止,我们已将构建复制到服务器并编写了一个同步程序来获取它(使用下面的Robocopy); 即使设置了镜像,传输速度也慢得令人无法接受,因为它需要长达一个小时或更长时间才能在高峰时间同步(非高峰时间大约为15分钟),这表明它们是硬件I/O瓶颈和可能的网络带宽.

到目前为止我所知道的

到目前为止我发现了什么:

  • 我在维基百科上找到了关于BitTorrent协议的优秀条目,这是一个有趣的读物(我以前只知道种子如何工作的基础知识).在客户端 - 服务器握手之后,在BITFIELD交换机上也发现了这个StackOverflow应答.

  • 我还找到了MonoTorrent C#Library(GitHub Source),我可以用它来编写我们自己的跟踪器和客户端.我们不能使用现成的跟踪器或客户端(例如uTorrent).

问题

在我的初始设计中,我让我们的构建系统创建一个.torrent文件并将其添加到跟踪器.我会使用我们现有的构建镜像来超级种子.

使用这种设计,我是否需要为每个新构建创建一个新的.torrent文件?换句话说,是否有可能创建一个"滚动" .torrent,如果构建的内容只有20%的变化,那么需要下载才能获得最新的内容

......其实.在编写上述问题时,我认为我需要创建新文件,但是我可以下载到用户计算机上的相同位置,哈希将自动确定我已经拥有的内容.它是否正确?

回应评论

  1. 对于完全新鲜同步整个构建(包括:游戏,源代码,本地化数据,和光盘图像为PS3和X360)〜37000页的文件和在未来只是 50GB下.随着生产的继续,这将会增加.当只有2个其他同步发生时,这个同步需要29分钟才能完成,如果您认为在早上9点我们将有50多个想要获得最新的人,这个低峰值.

  2. 我们已经与IT部门调查了磁盘I/O和网络带宽; 结论是网络存储已经饱和.我们还将统计数据记录到同步数据库中,这些记录显示即使是少数用户,我们也会获得不可接受的传输速率.

  3. 如果不使用现成的客户端,在用户机器上安装uTorrent等应用程序是一个法律问题,因为可以使用该程序轻松下载其他项目.我们还希望有一个自定义工作流程来确定您想要获得哪个版本(例如,只有PS3或X360,具体取决于您桌面上的DEVKIT)以及可用的新版本的通知等.使用MonoTorrent创建客户端不是其中之一我很担心.

c# continuous-integration bittorrent

6
推荐指数
1
解决办法
1188
查看次数

如何创建/构建/构建完全无跟踪的p2p(点对点)?

如何创建/构建/构建完全无跟踪的p2p(点对点)分布式网络架构?

如果我在不同的WAN中拥有静态IP地址和种子/对等体的种子/对等体.

我读到了BTSDHT

我也找到了:

Torrent文件扩展名

无跟踪的torrent字典没有"announce"键.相反,无跟踪的torrent有一个"节点"键.此密钥应设置为torrent生成客户端路由表中的K个最近节点.或者,可以将密钥设置为已知的良好节点,例如由生成洪流的人操作的节点.请不要自动将"router.bittorrent.com"添加到torrent文件或自动将此节点添加到客户端路由表.

nodes = [["<host>", <port>], ["<host>", <port>], ...]

nodes = [["127.0.0.1", 6881], ["your.router.node", 4804]]

但是,我不知道我应该在哪里闪存(硬编码)这​​些IP地址

bittorrent transmission utorrent libtorrent

6
推荐指数
1
解决办法
1808
查看次数

在Torrent Kademlia路由表上实现查找节点

我已经阅读了有关此主题的许多文档,但是有些内容并不清楚。例如,比特种子文档(http://www.bittorrent.org/beps/bep_0005.html)指出

路由表被细分为“存储桶”,每个存储桶覆盖一部分空间。一个空表有一个存储桶,其ID空间范围为min = 0,max = 2 ^ 160。当将ID为“ N”的节点插入表中时,该节点将被放置在最小<= N <最大的存储桶中。空表只有一个存储桶,因此任何节点都必须位于其中。每个存储桶只能容纳K个节点(当前为8个),然后再变为“满”。当存储桶中充满了已知良好的节点时,除非我们自己的节点ID落入存储桶的范围内,否则无法再添加更多节点。在这种情况下,该存储桶将被两个新存储桶替换,每个新存储桶的范围均为旧存储桶的一半,并且旧存储桶中的节点将分布在两个新存储桶中。对于只有一个存储桶的新表,

关于kademlia路由表,它与其他文档有些不同,在kademlia路由表中,根据节点id的位前缀来排列存储桶,但还有另一件令人困惑的事情。当我们回复“查找节点”请求时,我们必须使用XOR操作找到8个最接近所请求节点的节点。我看到一些实现只是通过路由表中的每个项目执行XOR操作,从而找到8个最接近的项目。在我看来,CPU也在浪费。

一切都已经在桶中了。即使我们使用bit torrent文档系统建议的内容,我们也可以更快地找到可能包含所请求节点ID的存储桶,只需枚举存储桶并检查其上的最小和最大数目即可。然后,该存储桶可能应包含关闭节点,但它们是值最接近的节点,而不是异或最相似的XOR最接近的节点(据我所知)。

我使用0到99的数字进行了一个简单的测试,我想找到8个XOR最接近的数字,它们在所寻找的数字附近,但不在附近。现在,考虑一下我们的存储桶,我猜可能存储桶中的所有节点ID都是最接近的,仅是次要异常。因此,例如,如果我们拿这个存储桶,从左边取一个,从右边取一个,并搜索XOR最近的节点ID,我们将找到我们要寻找的东西,并且没有必要遍历路由中的所有节点表。

我是对的还是我错过了什么?

routing bittorrent dht kademlia

6
推荐指数
1
解决办法
818
查看次数

Bittorrent:IP 地址从何而来?

我正在阅读有关 Bittorrent 协议的内容,但在 Wiki 页面上找不到提到的内容。我可以理解跟踪者和发布者的作用,但从实际角度来看,我尝试联系跟踪者给我一些信息,它给了我以下信息:

7%00%00%04%82%91%F3%CA%D5%92%08%C8%7C%B0%AE%1E4%2B%E4C:0:1
Run Code Online (Sandbox Code Playgroud)

现在,开头的长字符串可能是信息哈希。作为下一步,我这样做了:

http://tracker.sometracker.com/announce?info_hash=7%00%00%04%82%91%F3%CA%D5%92%08%C8%7C%B0%AE%1E4%2B%E4C
Run Code Online (Sandbox Code Playgroud)

它给了我一个种子文件。到现在为止还挺好。Torrent 文件包含以下内容:

d8:completei0e10:downloadedi0e10:incompletei2e8:intervali1931e12:min intervali965e5:peers12:U????????^@^@e
Run Code Online (Sandbox Code Playgroud)

我去了这个网站:http://en.wikipedia.org/wiki/Torrent_file但找不到任何描述(或者可能错过了)。现在,如果我是客户端并且我得到了这个文件,我从哪里得到拥有该文件的 IP 地址列表?

bittorrent protocols

5
推荐指数
1
解决办法
229
查看次数

如何向我知道 IP 地址的 PC 发送短信?

我知道这是一个奇怪的问题,但我想知道是否有办法向我知道 IP 地址的 PC 发送短信。

例如,我正在通过 torrent 从网络上的 PC 下载文件。

通过 torrent 我可以知道这台电脑的 IP 地址,我想给拥有这台电脑的人发送一条短信。

这可能吗?

bittorrent protocols ip-address network-protocols

5
推荐指数
1
解决办法
7674
查看次数

Torrent 相关:UDP 协议上的跟踪器响应(更新 #3 - 工作)

更新 #4:添加了演示 java 片段,用于使用 UDP 并发送公告消息(记住连接是第一个!)检查下面自己的响应。

=================================================== ==

更新#3:我设法让它工作,下面介绍的方法 doConnect() 是可以的,更多信息在我自己的回复中。

=================================================== ==

我主要感兴趣的是当公告 url 的协议是 UDP 时如何下载跟踪器响应。

详细信息:这些是来自有效 torrent 文件的一些公告网址(第一个是主要的)

http://tracker.torrentbox.com:2710/announce
udp://elbitz.net:80/announce.php?passkey=362fc69de3402e8ef5794c7ecf7c58d4
udp://tracker.podtropolis.com:2711/announce
Run Code Online (Sandbox Code Playgroud)

如果协议是 HTTP,一切都会顺利,这就是我的工作方式:

String fullUrl = announceURL + "?info_hash=" + this.m_TorrentInfoHashAsURL + .. // i add the params
URL url = new URL(fullUrl);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
.. //reading the stream
Run Code Online (Sandbox Code Playgroud)

如果协议是 UDP,则 URL 构造函数会抛出“java.net.MalformedURLException:未知协议:udp”

所以我想问题可以恢复为以下内容:如何从 UDP 协议上的 URL 下载响应?(希望很简单并且我没有看到数据报的东西)

更新#1:

我在网上做了一些更多的调查并得出了下面粘贴的以下结构(应该可以工作..但不行,我的意思是在本地它可以,但不能使用真正的跟踪器)

规格链接:http://www.bittorrent.org/beps/bep_0015.html

例如:这就是我创建套接字的方式,但是在有效的跟踪器上我从未收到任何响应,因此有些东西不起作用:

if full url: udp://elbitz.net:80/announce.php?passkey=362fc69de3402e8ef5794c7ecf7c58d4
this.m_TrackerHost: elbitz.net 
this.m_TrackerPort: 80 …
Run Code Online (Sandbox Code Playgroud)

java bittorrent udp http

5
推荐指数
1
解决办法
4031
查看次数

从哈希(或磁力链接)解析种子的元数据?理想情况下在python中

我正在尝试获取一个磁力链接(即magnet:?xt=urn:btih:640FE84C613C17F663551D218689A64E8AEBEABE)并为其获取元数据(标题、文件、评论,以及 .torrent 文件附带的任何其他内容)。理想情况下在python中,但我会获取任何可以获得的信息

python p2p bittorrent magnet-uri

5
推荐指数
1
解决办法
3343
查看次数