Libtorrent设置download_limit / upload_limit无效

时间:2017-03-27 11:47:55

标签: python bittorrent torrent libtorrent libtorrent-rasterbar

我想在我的libtorrent客户端中限制下载/上传速度。我正在使用以下代码。

params = { 'save_path': '.', \
           'storage_mode': lt.storage_mode_t.storage_mode_sparse, \
           'ti': info, 'flags': 0x020 }

h = ses.add_torrent(params)
h.set_download_limit(100)
h.set_upload_limit(100)
h.resume()

它应该以0.1 kb /秒的速度下载数据,但它仍然以大约1500 kb / sec的速度下载数据。

100.00% complete (down: 1576.0 kb/s up: 55.0 kB/s)

我缺少什么?

1 个答案:

答案 0 :(得分:1)

也许您的同伴与您自己在同一个本地网络上。默认情况下,本地对等体不受速率限制(如记录here)。

不幸的是,关于如何使速率限制适用于本地同行的文档有点缺乏。我试图在pull request中解决这个问题。

基本上,要使全局速率限制适用于所有对等体,无论它们具有哪种IP,请执行以下操作:

std::uint32_t const mask = 1 << lt::session::global_peer_class_id;
ip_filter f;

// for every IPv4 address, assign the global peer class
f.add_rule(address_v4::from_string("0.0.0.0")
    , address_v4::from_string("255.255.255.255")
    , mask);

// for every IPv6 address, assign the global peer class
f.add_rule(address_v6::from_string("::")
    , address_v6::from_string("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")
    , mask);
ses.set_peer_class_filter(f);