Вопрос

Я хочу собрать статистику распространения файла в новом потоке bittorrent, фактически ничего не загружая (или как можно меньше).Мне нужно знать, у какого однорангового узла какие фрагменты (для составления статистики на основе файлов), зная количество сеялок и пиявок или проценты, недостаточно.Позже, когда появится много одноранговых узлов, мне нужно будет загрузить данные, чтобы определить, что это такое.Эту часть можно выполнить с помощью обычного торрент-клиента.

Я не планирую внедрять протокол самостоятельно, поэтому я просмотрел 2 реализации libtorrent и libbtcore от ktorrent.Ни один из них не способен собирать данные без загрузки, просто нет подключенных одноранговых узлов, когда нечего загружать.Libtorrent проще, но ktorrent выглядит лучше прокомментированным.

Я вижу 3 возможности:

  • Используйте какое-нибудь приложение именно для этого.Есть ли они вообще?
  • Измените реализацию торрента, чтобы делать то, что я хочу.Кто-нибудь знаком с ними?С чего начать?
  • Реализуйте небольшое подмножество протокола.Просто периодически спрашивайте сверстников, что у них есть.Возможно ли это или программе потребуется поддерживать почти полный протокол?

Что вы рекомендуете?

Это было полезно?

Решение

Это старый вопрос, но, возможно, этот ответ может быть полезен другим.

  • Используйте какое-нибудь приложение именно для этого.Есть ли они вообще?

Насколько мне известно, нет.

  • Измените реализацию торрента, чтобы делать то, что я хочу.Кто-нибудь знаком с ними?С чего начать?

Я знаком только с ядром BitTornado (которое используется, например, вАзбука).Он написан на Python, но это архитектурный беспорядок.

Однако вы могли бы просто взять любую реализацию и начать избавлять ее от ненужной функциональности.

  • Реализуйте небольшое подмножество протокола.Просто периодически спрашивайте сверстников, что у них есть.Возможно ли это или программе потребуется поддерживать почти полный протокол?

Обратите внимание, что вы не можете "спросить" коллегу, что у них есть.Другой одноранговый узел сообщает вам всякий раз, когда он хочет, о тех фрагментах, которые у него есть (так что это толкать вместо того , чтобы тянуть).После рукопожатия BitTorrent одноранговый узел может отправить битовое поле из кусочков, которые в нем есть.После этого он может отправлять вам сообщения, информирующие вас о том, что он приобрел новую деталь.Также обратите внимание, что коллеги могут лгать о тех фрагментах, которые у них есть.Примеры включают замещающие сверстники а клиентам фрирайда нравится BitThief.

Если вы хотите реализовать небольшое подмножество протокола, вам нужно, как минимум, реализовать сообщение о рукопожатии BitTorrent и, предпочтительно, расширенное сообщение о рукопожатии.Последнее позволяет вам получать (и отправлять) сообщения uTorrent PEX.PEX полезен для быстрого обнаружения других аналогов в рое.

Для целей сбора статистики вам дополнительно необходимо поддерживать битовое поле и ИМЕТЬ сообщения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top