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의 데이터를 다운로드해야하지만, 여전히 약 1천5백킬로바이트/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

당신이 파이썬 구문을 제안 할 수 있습니다. 나는 그것을 찾을 수 없다. –

+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)을 시도했다. 이 경우에도 성공하지 못합니다. –

관련 문제