2017-03-27 74 views
1

我想限制我的下载/上传速度在我的libtorrent客户端。我为此使用以下代码。Libtorrent设置download_limit/upload_limit不起作用

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) 

我失踪了吗?

回答

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); 
+0

您能否提供了Python语法。我无法找到任何东西。 –

+0

我试过了,g = lt.ip_filter(),g.add_rule(“0.0.0.0”,“255.255.255.255”,0),然后启动。句柄或lt.session()中没有set_peer_class_filter方法。我试过ses.set_ip_filter(g),但仍然没有成功。 –

+0

我也试过ses.set_local_download_rate_limit(10000)。即使在这种情况下也没有成功。 –