我想在我的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)
我缺少什么?
答案 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);