1

我想在我的 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/sec 的速度下载数据,但它仍然以大约 1500 kb/sec 的速度下载数据。

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

我有什么遗漏吗?

4

1 回答 1

1

也许您的同行与您在同一个本地网络上。默认情况下,本地对等点不受速率限制(如此所述)。

不幸的是,关于如何将速率限制应用于本地对等点的文档有点缺乏。我试图在这个拉取请求中解决这个问题。

基本上,要使全局速率限制适用于所有对等点,无论它们拥有哪个 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);
于 2017-03-28T00:51:53.567 回答