问题标签 [libtorrent-rasterbar]
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.
python - 在 Python 中使用 Libtorrent 下载多个 torrent 文件
我正在尝试编写一个 torrent 应用程序,它可以接收磁铁链接列表,然后将它们一起下载。我一直在尝试阅读和理解Libtorrent的文档,但我无法判断我尝试的方法是否有效。我设法能够将 SOCKS5 代理应用到 Libtorrent 会话并使用以下代码下载单个磁力链接:
这很棒,而且所有这些都可以通过单个链接自行运行。我想做的是这样的:
我不确定这是否在正确的轨道上,但一些指针会有所帮助。
更新:这就是我现在拥有的,在我的情况下它工作正常
c++ - libtorrent file_storage 无效:分配错误
我正在关注libtorrent-maketorrent-example
我正在使用以下参数运行客户端
file_storage
使用默认构造函数声明如下
程序在尝试添加文件时抛出异常
我猜这个问题可能是因为 file_storage 无效,因为我在调用 lt::add_files 之前添加的以下语句返回false
即 0
我得到了 lt::add_files 的错误分配异常
完整路径是C:\workspace\Project1%20POC\client\base_text.torrent
我该如何解决这个问题?难道我做错了什么?
c++ - Libtorrent:Download-Connection could not be made because the target machine主动拒绝它
我在一个带有参数的小文本文件上创建了 torrent 文件。
client.exe abc.txt -o abc.torrent -t http://MyIpv4:9090/ -l
创建 torrent 的代码与libtorrent-tutorial-make_torrent中的代码相同,然后在启动客户端时我设置lt::settings_pack::broadcast_lsd
为 true,如下所示
下载种子代码:
此代码适用于公共种子。我通过从其中一个 torrent 网站下载有效 torrent 文件中的文件对其进行了测试。
在另一台机器上的同一个 wifi 网络上,我试图通过传递磁铁 URI 来下载这个种子,如下所示
下载日志
我从这个问题中了解到,在 LAN 中我可能必须打开本地对等发现选项并启用 NAT-PMP/UPnP
我尝试过的事情:
- 设置
lt::settings_pack::broadcast_lsd
为true
- 在控制面板 -> 网络和共享 -> 高级设置 -> 公用文件夹共享中启用 windows 网络发现 = 是
- 完全关闭客户端计算机上的防火墙
- 为端口 9090 添加了 TCP 和 UDP 的入站规则
- 如果使用 udp 而不是 http 创建 torrent:在从其他机器运行下载代码时,
An address incompatible with the requested protocol was used.
我无法处理路由器设置,因为我无权访问它。
我能够在同一网络上运行 2 个对等点并发送接收消息而不会出现此问题。
有没有办法克服这个错误?
bittorrent - libtorrent 在会话中禁用 dht 和 lsd
我们正在创建这样的 libtorrent 会话:
与 ssl_listen 类似,我们希望在 libtorrent 会话中禁用 DHT、LSD、UPnP、NAT-PMP。有什么办法吗?
同样在 libtorrent 手册页中提到:
如何在一次调用中进行批量设置更新?
基本上我们想要更改这些默认设置字段:enable_lsd, enable_dht, enable_upnp, enable_natpmp
然后使用这些设置创建一个会话对象。
bittorrent - 有没有办法利用 Bittorrent DHT 处理小数据
我有一个需要同步池数据集的一系列主要连接的节点的情况。它们是 200-1500K 的文件,根据环境的不同,在 30 分钟到 6 小时之间不定期更新。现在节点的数量有数百个,但理想情况下,它会增长。
目前,我正在使用 libtorrent 在节点集群之间保持一系列文件同步。我每隔几个小时做一次转储,并根据之前的种子创建一个新的 torrent。然后我使用 BEP 38 的策略关联它。然后将 infohash 发布到 DHT 中的一个已知条目,其他节点轮询以获取它。
我想知道是否有更好的方法来做到这一点。我喜欢 BitTorrent 的原因最初是为了固件更新。我不需要担心连接性不够好的节点,并且使用 DHT,它可以很好地自组装。然后扩展以同步这些池文件。
我目前正在尝试查看是否可以进行扩展,以允许我让每个节点announce_peer
为每个新记录执行一次。那么理论上相关方将能够倾听。这带来了两个大问题:
- 如何让感兴趣的节点知道有新数据?
- 如果我有 1000 个或更多节点每隔几分钟添加新的信息散列,这会对 DHT 造成什么影响?
我承认这感觉就像我试图将一个方形钉子打入一个圆孔,但我真的很想一次保持尽可能少的协议。
python - 通过频繁向 DHT 发布消息来快速获得同行?
我是 BitTorrent 协议的新手,所以请保持温和。
据我了解,种子文件应该每 15 分钟向 DHT 发布一次,默认情况下,这是libtorrent所做的。但是,如果在第一次宣布之后我没有得到任何同行怎么办?我是否必须等待 15 分钟才能让 libtorrent 获得下一次机会来获取同行列表?
为了避免等待,我将 libtorrent 配置为每 3 秒向 DHT 发布一次消息:
通过这种方法,我在 10 秒内成功获取了 peer 列表。这是快速获得同行的正确方法吗?如果没有,从 DHT 快速获得对等点的正确方法是什么?这是虐待吗?
c++ - 为树莓派 3 模型 B 交叉编译 libtorrent
我一直在尝试为使用boost build进行编译的树莓派交叉编译jlibtorrent。我正在使用官方提供的交叉编译器,其中包含以下内容:config.jam
我基本上复制了 linux-x86 的现有配置并替换了编译器,但出现以下编译错误:
我唯一的猜测是交叉编译器的版本(4.9.3)与libtorrent不兼容,因为我在linux-32-config.jam中看到它使用g++-5。还有什么我想念的吗?您可以在我的 github 存储库中找到修改后的存储库。我swig/build-linux-armv7.sh
用于建筑。
python - 如何使用 libtorrent 将 set_sequential_download() 添加到此代码中?
如何添加set_sequential_download(True)
到下面的 python 代码?
我尝试了几种添加句柄的方法;但它不起作用。sequential_download 也被称为 torrent 标志和 torrent 句柄。我浏览了 Libtorrent 网站上的文档,但不清楚,而且我对 python 的经验非常有限。
ssl - SSL torrent 通过磁力链接
我正在使用 SSL 种子设置我的系统。如果我的两个客户都有 .torrent,即使没有跟踪器,它也能很好地工作,这要归功于本地服务发现。所以现在我的下一步是为没有种子的客户端使用磁力链接。我的两个客户端都只监听 SSL 的端口(当监听超过 1 个端口时,他们实际上会感到困惑......)。但在这种设置中,他们似乎无法进行交流。这是意料之中的,因为 ssl 套接字应该只接受来自具有证书的对等方的连接......
但是,我的设置需要什么才能让客户端下载 SSL 种子元数据(种子文件)?
任何帮助是极大的赞赏。这是我的实验代码
所以我开始我的播种客户
...和我需要的客户
这就像一个魅力。并不是说 cert_path 是我的客户端证书的路径,其中主题替代名称设置为 * 和我使用 openssl 生成的 sh 参数文件。
但是,如果我这样做:
这卡在“dl 元数据”上。
当然,用非 SSL 种子尝试同样的事情就像一种魅力。
-----经过更多思考后编辑-----
因为这很有意义:能够加入 swarm 意味着需要使用正确的证书并且知道底层的 torrent 是 SSL 的,所以我继续在 1 警报的管理中更改了一些代码
这很丑陋(使用私有 api),但它似乎确实有效。我会尝试找到更好的解决方案。
所以如果我错过了什么,请告诉我。谢谢。