2010-02-20 2 views
3

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

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

Я вижу 3 варианта:

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

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

ответ

3

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

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

Не то, чтобы я знал.

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

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

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

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

Обратите внимание, что вы не можете «спросить» партнера, что у него есть. Другой сверстник информирует вас всякий раз, когда он хочет о его частях (так что это push вместо pull). После рукопожатия BitTorrent одноранговый узел может отправить bitfield штук, которые он имеет. Впоследствии он может отправлять сообщения HAVE, информирующие вас о приобретении новой части. Также обратите внимание, что сверстники могут лгать о кусках, которые у них есть. Примеры включают superseeding peers и фрирайдинг клиентов, таких как BitThief.

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

Для сбора статистических данных вам также необходимо поддерживать битовые поля и сообщения HAVE.

Смежные вопросы