2017-03-27 70 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)。即使在這種情況下也沒有成功。 –