установление приоритетов последовательностей загрузки торрента с использованием libtorrent

Предположим, у меня есть 2+ клиентов (разработанных мной) ВСЕ, используя libtorrent ( http://www.rasterbar.com/products/libtorrent/manual.html#queuing )

Могу ли я расставить приоритеты при загрузке файла с других клиентов, чтобы они загружали части / куски файла (какова здесь терминология торрента) от начала файла до его конца и не совсем в случайном порядке?

(конечно, я разрешаю некоторые «мультиплексные» / «переплетающиеся» фрагменты по причинам доступности и производительности, но цель здесь — загрузить как можно более линейно и быстро от начала файла до конца, насколько это возможно)

Цель, о которой я здесь думаю, — это быстрый предварительный просмотр файла. Как сделать это наиболее эффективно, используя libtorrent / возможно другую торрент-библиотеку C ++?

(Меня не очень интересуют торрент-реализации с использованием недвоичных языков, таких как Java или Python — мне нужен машинный код из соображений производительности и безопасности, поэтому C, C ++ или, возможно, D вполне подойдут)

1

Решение

Вы можете, конечно, расставить приоритеты для частей и файлов с torrent_handle::prioritize_pieces() а также torrent_handle::prioritize_files(), Увидеть документация.

Этого будет недостаточно для загрузки по порядку. Для этого вы можете включить последовательную загрузку с torrent_handle::set_sequential_download(), Это будет выдавать новые запросы на заказ. Имейте в виду, что время, которое требуется для удовлетворения запроса, сильно зависит от того, с кем вы разговариваете. Выполнение запросов по порядку не обязательно означает получение частей по порядку.

Есть другой механизм, чтобы попытаться сделать это. torrent_handle::set_piece_deadline() используется для установки целевого времени завершения произведения. Такие части считаются критическими по времени, и они упорядочены по их крайнему сроку, и самые быстрые одноранговые узлы используются для запроса блоков из этих частей, пытаясь загрузить их в порядке крайнего срока.

Теперь у меня также складывается впечатление, что вы хотите, чтобы два отдельных клиента (предположительно работающие на разных компьютерах) координировали, какие части они загружают. Это правильно? Не совсем понятно, о чем вы спрашиваете, но нет простого способа попросить libtorrent сделать это.

Вы можете написать плагин для libtorrent, который реализует новое сообщение расширения для этих клиентов для общения и координации, что может отменить выбор определенных фрагментов, которые загружает другой клиент, установив их приоритет на 0.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector