Как сделать торрент стандартным торрент приложением
Чтобы развеять сомнения по поводу неэффективности языка Delphi в таком «непростом» деле, как написание полноценного битторрент-клиента, я и решил написать эту статью.
Сразу скажу, что наш торрент-клиент на Delphi будет с открытым исходным кодом и будет поддерживать практически все современные битторрент-технологии, в том числе DHT, magnet-ссылки, последовательная закачка и т.д.
Поиск в интернете уже готовых исходников клиента на Delphi привел к результатам, но эти результаты оказались далеко неидеальными. Первым результатом оказался давно заброшенный Torrent Torque (2007г), причём альфа-версия. TorrentTorque мне не удалось нормально скомпилировать и испытать.
Следующим результатом поиска, оказался малоизвестный в рунете Ares Galaxy, который оказался вполне работоспособным и даже популярным в некоторых странах торрент-клиентом. Помучавшись с компиляцией, мне всё же удалось испытать желанный код, но у него оказались недостатки, которые как выяснилось, разработчиками не исправляются уже давно. Кроме того, Ares Galaxy написан на Delphi 7, а это значит, что для компиляции в более новых версиях RAD Studio необходимо переписывать огромное количество кода. Но меня это не остановило и я нашёл другой выход для решения данной задачи.
Итак, приступим к написанию простого клиента на основе библиотеки BTService.
Интерфейс клиента выполним в классическом стиле, с минимальным набором компонентов, но чтобы была видна основная функциональность библиотеки.
Пять кнопок на панели инструментов: добавление magnet-ссылки, добавление торрента, создание торрента, запуск торрента и остановка торрента.
Список торрентов будем отображать в стандартном TListView. Списки файлов, подключенных пиров и трекеров также разместим на TListView, которые соответственно будут отображаться при открытии вкладок TPageControl. Ну а внизу главной формы StatusBar, на котором будет отображаться magnet-ссылка выделенного в списке торрента, четыре состояния торрента и общие скорости закачки и отдачи для всех торрентов в списке.
Теперь по порядку разберёмся с событиями создания, запуска и остановки торрентов.
Все подробности связанные с созданием торрента и спецификацией битторрент-протокола описывать не будем, т.к. до нас это сделал Игорь в своей статье «Кодим BitTorrent-клиент. Часть первая». Весь код, выполняющий создание торрента, доступен в библиотеке BTService. Кому интересна его реализация, смотрите исходники библиотеки. Ну а я лишь укажу код, взаимодействующий с библиотекой.
Для начала создадим форму «Создать новый торрент». На которой разместим три кнопки: «Добавить файл», «Добавить папку» и «Создать». Добавим TPageControl. На первой вкладке разместим основные параметры. Параметр «Размер части» выполним в TCombobox, «Начать закачку» и «Частный торрент» выполним в TCheckBox. На других вкладках TPageControl разместим поля TMemo, добавляющие в торрент-файл адреса трекеров, веб-сидов и комментарии. Процесс создания торрента будем отображать на двух TProgressBar. На первом будет отображаться выполнение хэширования отдельного файла, а на другом общий процесс выполнения хэширования всех файлов торрента.
Для кнопки «Добавить файл» код будет следующий:
Для кнопки «Добавить папку» код будет следующий:
То есть в поле «Выбор источника»(ComboBox1.Text) добавляется путь файла или папки, в зависимости от того, что мы хотим добавить в торрент, один файл или несколько файлов в папке.
Далее на кнопку «Создать» пишем код:
Как видно из кода, первым делом происходит выбор каталога для сохранения торрента. А далее происходит поиск интерфейса IBTCreateTorrent, отвечающего за вызов процедуры SingleFileTorrent из плагина BTService. Данная процедура запускает процесс создания торрент-файла с содержанием одного файла, а для папки с файлами запускается процедура CreateFolderTorrent. После этого запускатся цикл repeat, в котором происходит периодическое обращение к функции GetInfoTorrentCreating, которая возвращает результат действий из плагина в процессе создания торрента и информацию о проценте выполненного хеширования. Если результат возвращается GetedStatus = 'completed', то процесс создания торрента завершился удачно и можно выходить из цикла.
Для добавления торрента в список создадим форму «Добавить торрент». Разместим на неё две кнопки: «Закачать» и «Добавить в список». Первая будет добавлять торрент в список и сразу начинать процесс скачивания, а вторая будет просто добавлять торрент в список для ожидания последующих действий над ним. Для отображения информации о торренте добавим на форму TEdit («Файл торрента:»), TComboBox («Сохранить в:»), TLabel(«Имя торрента:»,«Описание:», «Дата:») и список TListView, который будет показывать содержимое файлов и папок торрента.
В процедуре добавления торрента происходит проверка на наличие info hash в списке торрентов. Если info hash найден, то вместо добавления торрента в список, будет предложено добавить адреса трекеров из торрента BTPluginAddTrackers.AddTrackers(HashValue, trackers), иначе добавление торрента в список будет продолжено. После добавления торрента в список TasksList.Add(AddDataTask), будет создан поток TLoadTorrent (модуль uTorrentThreads), который выполнит запуск торрента BTPlugin.StartTorrent(DataTorrent) и в котором также запустится цикл repeat, проверяющий состояние и получающий информацию о торренте каждую секунду GetedData := BTPlugin.GetInfoTorrent(DataTask.HashValue).
За отображение полученной информации отвечает событие TListView OnData:
Вот мы и подошли к моменту тестирования. Хотя код клиента и является завершённым, я решил всё же дополнить его прогрессбаром, который разместил в статусбаре нашего клиента, вместо отображения magnet-ссылки, которая и так отображается в списке торрентов. Это нам нужно для того, чтобы видеть как происходит закачка, последовательно или нет.
После компиляции запускаем наш клиент, добавляем торрент в список нажав на кнопку «Добавить торрент». Один торрент добавим без установки метки «Последовательная закачка», а на другом установим эту метку и дождёмся начала закачки. В результате во время закачки мы должны увидеть следующую картину:
Т.е при выделении в списке торрента, в котором мы установили метку «Последовательная закачка», закачка происходит последовательно, а у другого торрента закачка частей торрента происходит выборочно, без последовательности.
Мы создали торрент-клиент, которым пользоваться возможно только в ОС Windows. Потому следует ожидать продолжение, в котором я расскажу о создании клиента для ОС Android и IOS, т.к все предпосылки для этого имеются.
А как настроить Метки в новых версиях программы в старых все норм работало а вот в новых не хочет все как обычно сделал в дополнительном добавил метки Видео|Игры| и т.д и папки создал !! а она все равно качает тупо в папку общую =( не раскидывает по меткам =( а в инете нет описания на новые версии тока на старые =(
1. в инструкции не хватает настройки bt.sequential_files для полного счастья.
2. указывать папку для скачивания нет смысла, т.к. этот параметр всегда появляется и запоминается при добавлении новых торрентов.
3. распределять место сразу - в теории должно защитить от фрагментации, на практике с отключенной опцией: новые файлы обычно создаются нужного размера, экономит место если нет сидов или передумали качать.
если hdd не системный (установлено несколько физических дисков), имеет смысл отключить кэширование на запись. тогда разгрузишь оперативку и во время больших дисковых операций (если качаешь большую раздачу) он будет делать паузы в скачивании.
после первого скачивания свалило пару человек с раздачи, так что я думаю результат был бы одинаковый + - 1 минута. 3.2.2 - настройки по дефолту, 2.2.1 - настройки так в посте.На страже вашего кошелька
Великий выбор
За год «вечной» блокировки количество скачиваний с Rutracker осталось прежним.
По данным администрации Rutracker, активность файлообмена снизилась незначительно — на 5-10%. Количество скачиваемых торрент-файлов осталось на уровне одного миллиона файлов в сутки.
Также администрация подтвердила, что если с января 2015 года сайт посещало примерно 14 миллионов человек в месяц, то к январю 2017 года аудитория снизилась до семи-восьми миллионов в месяц.
Представители торрент-трекера объяснили, что за год уменьшилась аудитория, которая посещала сайт с мобильных устройств. Настроить обход блокировки с использованием VPN или анонимных-бразуеров на смартфоне или планшете оказалось сложнее, чем на компьютере.
Поскольку большинство пользователей используют методы для обхода блокировок оценить количество пользователей из России невозможно. Сами мы не запрашиваем данные по пользователям, а определить откуда сам пользователь, если он зашёл через анонимайзер или VPN невозможно.
Безусловно, подавляющее большинство пользователей из России попадают на сайт, используя методы обхода блокировок. По нашим оценкам, таких примерно 90%.
Сегодня uTorrent считается наиболее известным торрент-клиентом и это бесспорно! Программа хоть и небольшая, но содержит множество полезных функций с обширными настройками, в добавок она предоставляется бесплатно, постоянно совершенствуется и обновляется.
Общие.
В этой вкладке и последующих мы уделим внимание наиболее важным опциям, обеспечивающим максимальное быстродействие и комфорт.
Соединение.
Неопытным пользователям разобраться в регулировках сети будет немного сложнее, чем остальным юзерам. Но в реальности здесь нет никаких архи сложностей и как настроить uTorrent Вы обязательно разберётесь. Изначально утилита сама определяет необходимые настройки соединения, отвечающие самым распространенным. В ряде случаев, при использовании маршрутизатора, модема может потребоваться коррекция (донастройка), ознакомьтесь со следующими рекомендациями.
Ваш компьютер обеспечен защитой брандмауэра Windows или стороннего разработчика (а он должен), проверьте отмечен ли галочкой пункт «в исключения брандмауэра», включите эту функцию во избежание ошибок.
Когда Вы подключаетесь через proxy-сервер (прокси – ближайший, ближний), то нужно включить параметр «Прокси-сервер». Сначала выберите тип, порт, потом IP-адрес сервера. Если необходима аутентификация (вход по паролю), запишите логин и пароль. Если имеется одно подключение, то необходимо включить «Использовать прокси для P2P-соединений».
Скорость.
Если Вам надо настроить uTorrent на максимальную скорость, использовав весь интернет-трафик, запишите в поле максимальной скорости приема ноль, или же укажите скорость, обговоренную в договоре с провайдером. Если Вы желаете одновременно использовать torrent-client и интернет для брожений по сайтам, то напишите цифру на 10-20% меньше максимума для загрузки и отдачи.
Давайте посчитаем, как настроить скорость uTorrent по вашему тарифному плану. Допустим, максимальная скорость, написанная в договоре = 3 мегабит/сек. Чтобы получить ее в килобитах, умножьте на 1000, получаем 3000 килобит, поделим на 8 и получим 375 килобайт – это ваша скорость загрузки в килобайтах. То есть, 3 мегабита = 3000 килобит = 375 килобайт в секунду! Возможность отдачи обычно значительно урезана и равна 1 мегабиту/сек = 125 KB/s.
Очередность.
Чтобы выставить эффективные настройки программы uTorrent в текущей категории, целесообразно отталкиваться от вашей скорости тарифного плана. Для этого предоставлены графы оптимальных значений, которые изображены на рисунках снизу. Такие регуляторы как: «Минимум доступных задач», «Минимальное время раздач», «Минимальное соотношение» (между объемом раздачи и скаченным) вы сможете поставить аналогично как иллюстрировано на 1-ом рисунке снизу. Хотя, они, зачастую, не столь значимы.
BitTorrent.
DHT, применяет хеш-сумму торрентов, производит поиск всех источников раздачи материала за границами трекера. Применяя BitTorrent в интернет сети, эту функцию следует включить. Если пользуетесь закрытыми трекерами, то работу сервера DHT запрещают и отключают.
«Scrape-запросы» созданы для получения статистических данных по торренту от трекера, а также сбора данных о пирах. Можно отключить. Скорость локальных пиров срезать не следует. Есть смысл «включить обмен пирами». Необходимо, чтобы было включено исходящее «шифрование протокола».
На этом ставим точку, это наиболее востребованные настройки для uTorrent, знание о которых будет полезно всем без исключения. Настраивайте программу под своё железо и уТоррент Вас не разочарует.
При копировании материала ссылка на сайт обязательна!
С наилучшими $ пожеланиями
Denker.
Многие пользователи Интернета привыкли скачивать фильмы и сериалы, хотя сейчас куча разнообразных сервисов, приложений и сайтов, где за небольшую плату можно посмотреть все, что душе угодно. Некоторые лейблы даже новинки сразу выкатывают на своих сервисах, и в кино идти не нужно. Но так называемые торренты не теряют популярности. Что это такое, как работает и насколько это законно — разберемся в этом материале.
Что такое торрент
Торрент, он же BitTórrent (в буквальном переводе — поток бит) — это пиринговый (P2P) сетевой протокол, созданный, чтобы совместно обмениваться файлами через Интернет. А пиринговая сеть — это одноранговая сеть, где узлы «общаются» без центрального элемента. Сетевой протокол является набором правил и последовательности действий. Все это вместе позволяет устройствам соединяться и обмениваться данными.
Торрент-файлы передаются частями между устройствами (для удобства будем иметь в виду ПК). Каждый клиент скачивает кусочки файлов и одновременно раздает их другим участникам сети. При этом достигается избыточность данных, которая позволяет снизить зависимость от каждого узла сети. Проще говоря, одни и те же куски файлов хранятся на многих компьютерах, и если часть компьютеров, хранящих файлы, пропадет из сети, то сеть продолжит работу.
Торренты распространяются через файлы с метаданными, имеющими расширение «.torrent». Каждый такой файл содержит обязательную информацию: URL трекера, имя и размер файла и контрольные хеш-суммы SHA1-сегментов раздаваемых файлов. Также в файле может быть необязательная информация: хеш-суммы файлов целиком и альтернативные источники, работающие не по протоколу BitTorrent.
Принцип работы протокола BitTorrent
Приложение-клиент подключается к трекеру, указанному в файле. Передает ему свой адрес и хеш-сумму файлов, которые он хочет скачать. В ответ трекер передает клиенту адреса других ПК, которые раздают нужные файлы. Далее терекер периодически передает клиенту новые адреса раздающих ПК, если такие появляются в сети.
Клиенты связываются друг с другом напрямую, без участия сервера-трекера. Чем больше устройств будет хранить нужный вам файл, тем быстрее будет происходить скачивание, так как разные куски файла можно будет одновременно скачивать из кучи источников.
При соединении клиенты сообщают друг другу об имеющихся у них сегментах. ПК, желающий скачать сегмент, — он называется личер — посылает запрос и, если второй ПК, — сидер — готов отдавать, личер получает этот сегмент. После этого клиент проверяет контрольную сумму сегмента. Если она совпала с той, что записана в торрент-файле, то сегмент успешно скачивается, а клиент оповещает всех присоединенных о том, что у него есть этот сегмент. Если же контрольные суммы различаются, то сегмент начинает скачиваться заново. Некоторые клиенты банят тех пиров, которые слишком часто отдают некорректные сегменты.
Порядок обмена сегментами выстроен, чтобы между клиентами распространялись в первую очередь самые редкие сегменты, так повышается доступность файла в сети. Сегменты могут весить от 16 до 4096 килобайт.
Режим End game
Компьютер переходит в этот режим, когда скачивание почти закончилось. В еnd game клиент запрашивает оставшиеся сегменты у всех подключенных. Благодаря этому не происходит замедление или полное «зависание» процесса скачивания файла, который почти уже загрузился, из-за каких-то медленных клиентов.
Сидирование
Когда клиент получил полный файл, он начинает отдавать данные другим участникам сети, то есть, становится сидом. Далее сид периодически подает трекеру сигналы об изменениях в состоянии закачек, обновляя списки IP-адресов.
Общие особенности протокола
- Нет очереди на скачивание.
- Файлы загружаются небольшими фрагментами.
- Клиенты-пиры обмениваются сегментами по принципу «ты — мне, я — тебе».
- Скачанные фрагменты становятся немедленно доступны другим клиентам.
- Контролируется целостность каждого фрагмента.
На фрагменты разбивается вся раздача целиком, поэтому у «личера», который решил скачать только несколько файлов из закачки, будет храниться небольшой запас информации, для поддержания целостности фрагментов. В качестве объекта раздачи могут выступать несколько файлов, например, содержимое каталога.
Клиенты работают по протоколу TCP (Transmission Control Protocol — протокол управления передачей, один из основных протоколов передачи данных интернета). Клиенты и трекеры могут использовать любой порт, вместо стандартного 6969, чтобы избежать блокировки по порту некоторыми провайдерами.
Трекер
Трекер — это специальный сервер, позволяющий клиентам найти друг друга. Трекер хранит у себя только IP-адреса и хэш-суммы раздач и ничего не знает об имени и содержимом передаваемых файлов. Начиная с версии 4.2.0 официального клиента, выпущенного в 2015 году, появилась бестрекерная работа, которая базируется на DHT Kademlia. В этой реализации трекер доступен децентрализовано на клиентах в форме распределенной хеш-таблицы.
DHT — аббревиатура Distributed hash table, то есть распределенная хэш-таблица. Является протоколом, позволяющим битторрент-клиентам находить друг друга без использования трекера. Клиенты с поддержкой DHT образуют общую DHT-сеть и помогают друг другу найти участников одних и тех же раздач. Это позволяет участникам быстрее находить друг друга, снизить нагрузку на трекер, поддерживает участников вместе в периоды недоступности трекера.
Magnet-ссылка
magnet: — это открытый стандарт URI (Uniform Resource Identifier — единообразный идентификатор ресурса) схемы. Магнитная ссылка позволяет найти файлы без файла torrent. Эта ссылка содержит в себе только хэш-код раздачи. Также magnet-ссылки могут распространяться в виде файлов с расширением *.magnet.
Одним из преимуществ magnet-ссылок является их открытость и независимость от платформы: они могут быть использованы для загрузки файла при помощи разнообразных приложений на большинстве операционных систем. Благодаря тому, что magnet-ссылка представляет собой короткую строку текста, она может быть легко скопирована через буфер обмена, отправлена по электронной почте, через мессенджеры и SMS.
Недостатки и ограничения
Если в сети нет сидера, у которого есть все фрагменты раздачи нужного файла, то все части невозможно скачать, пока не появится клиент с полным набором. Раздача, в которой долгое время нет полного содержимого, называется «мертвой». Также в торрент-сети отсутствует анонимность, возможно узнать IP-адреса тех, кто скачивает, и тех, кто раздает. Но нельзя узнать какие еще раздачи или скачивания производятся с данного адреса.
Также некоторые из торрент-трекеров имеют открытый доступ, то есть каждый желающий может загрузить любую информацию, и эти раздачи не проверяются. Поэтому некоторые торренты могут содержать вредоносное ПО.
В 2008 году началась разработка нового поколения протокола — BitTorrent v2. В нем алгоритм хеширования SHA-1 заменен на более совершенный SHA-256. Он несовместим со старым, поэтому современные клиенты могут работать с обоими протоколами.
Законно ли пользоваться торрентами
Многие трекеры заблокированы в России за раздачу пиратского контента. Но в трекерах также содержится много авторских файлов и свободных раздач, которые полностью легальны. Если скачивать контент, не защищенный авторским правом — никаких последствий не будет.
За нарушение авторского права в российском законодательстве существует административная ответственность — уголовная и гражданская. Чтобы привлечь к административной ответственности по п.7.12 КоАП, надо доказать, что с помощью скаченного контента человек получит доход. А для привлечения к уголовной ответственности стоимость нарушения авторских прав должна превышать 100 тысяч рублей.
В России и во многих других странах в борьбе с нелегальным распространением контента в основном используется ограничение доступа. При этом пользователю фактически не грозит ответственность за незаконное скачивание. Но в некоторых государствах даже простое скачивание незаконного контента влечет за собой реальную административную или даже уголовную ответственность.
Протокол BitTorrent сам по себе не является незаконным или небезопасным. Это просто средство для обмена файлами любого типа, и существует множество легальных торрент-сервисов.
Но совместное использование и загрузка материалов, защищенных авторским правом, с помощью BitTorrent или иными способами, является незаконным процессом во многих странах. Простыми словами: торрент сам по себе легален, но загрузка несанкционированных материалов, защищенных авторским правом — это противозаконный процесс.
Лучшие торрент-клиенты
BitTorrent — это оригинальный и официальный торрент-клиент от разработчиков протокола. В бесплатной версии показывает рекламу.
BitComet — еще одно классическое приложение, появившееся чуть ли не одновременно с разработкой протокола. Но отзывы о нем протитвречивые.
BitLord — еще один собственный торрент-клиент, который доступен для платформ Windows и MacOS. Первоначально выпущенный в 2003 году, BitLord появился из вышеупомянутого BitComet и включает в себя ряд функций, которых нет на других платформах. Например, встроенный проигрыватель VLC для просмотра видео в приложении, поддержку субтитров с использованием API и встроенный торрент-поисковик.
Halite — это сверхлегкий, суперуниверсальный торрент-клиент. Поставляется со всеми программами и функциями, которые можно ожидать от современного торрент-клиента, в том числе с системой управляемых торрент-очередей, поддержкой магнитного URI, супер-заполнением и возможностью создавать торрент-файлы в приложении.
uTorrent — очень популярный клиент, который, со временем стало труднее рекомендовать из-за переизбытка рекламы. Изначально программа была легким и простым в использовании торрент-клиентом. В 2010 году uTorrent начала включать панель инструментов Conduit Engine в свою утилиту загрузки, а также делать домашнюю страницу и поисковую систему Conduit по умолчанию без согласия. В 2011 году uTorrent начал включать панель инструментов Bing, а затем объявил о платной версии приложения под названием uTorrent Plus.
qBittorrent — бесплатный клиент с открытым исходным кодом, без рекламных объявлений, регулярно обновляется.
Deluge — еще один бесплатный клиент с открытым кодом. От qBittorrent отличается меньшим размером — 34 килобайта.
Transmission — клиент для MacOS и linux, версия для Windows имеет меньший функционал.
Vuze — торрент-клиент. Имеет бесплатную и платную версии.
Сеть торрент и криптовалюты
BitTorrent, Inc. — частная американская компания со штаб-квартирой в Сан-Франциско, была основана 22 сентября 2004 года Брэмом Коэном (Bram Cohen) и Ашвином Невином (Ashwin Navin). На пике популярности аудитория сервисов BitTorrent достигала 150 миллионов активных пользователей в месяц.
В июне 2018 года компанию купил миллиардер, создатель криптовалюты TRON, Джастин Сан (Justin Sun). Протокол позволяет передавать любые типы файлов. Это помогло скомбинировать cеть BitTorrent и блокчейн TRON, так и был создан проект Atlas и криптовалюта BTT.
Криптовалюта BTT (BitTorrent Token) впервые появилась в продаже 28 января 2019 года на бирже Binance. Буквально за 15 минут было распродано 60 миллиардов токенов BitTorrent. Это принесло команде около $7 миллиардов. Сейчас эмиссия BitTorrent (количество монет в обращении) — 990,000,000,000.
Проект Atlas не предполагает майнинг. Разработчики не видят смысла поощрять майнеров за огромные траты электроэнергии и дорогостоящее оборудование — принцип действия алгоритма proof-of-work (например, у биткоина).
Алгоритм консенсуса BTT — delegated proof-of-stake (DPoS). Он основан на голосовании между владельцами токенов в реальном времени. Выбираются супер представители, которые следят за стабильностью системы, и за это получают вознаграждение. Если сообщество не устраивают представители, их можно переизбрать. Такой же алгоритм у криптовалюты Tron (TRX) — основного блокчейна для проекта Atlas.
BTT можно получить через обмен на другие валюты, либо через эирдроп. Для владельцев криптовалюты Tron (TRX) производится эирдроп, запланированный на шесть лет. Чтобы получить монеты BTT бесплатно, достаточно хранить любое количество токенов TRX. Но чем больше их будет, тем больше BTT получите на эирдроп:
- с 11 февраля 2019 — 10,890 миллионов BTT;
- с 11 марта 2019 до февраля 2020 — 11,880 миллионов BTT;
- с 11 марта 2020 до февраля 2021 ー 12,870 млн BTT;
- до февраля 2025 года сумму эирдропа будут повышать на 0,1 % от всех токенов ежегодно.
Эирдроп для держателей TRX производится 11 числа каждого месяца. Следить за курсом BTT можно здесь.
Читайте также:
- Как сделать чтобы публикации в инстаграм не сохранялись в телефоне
- Как отключить свобода на карте хоум кредит в приложении
- Battle of the immortals arcana не удалось запустить приложение
- Как изменить язык в приложении snow
- Какое утверждение неверно приложения могут обособляться при помощи запятых и тире тест