Это старый вопрос, но, возможно, этот ответ может быть полезен для других.
- Используйте какое-то приложение именно для этого. Есть ли?
Не то, что я знаю.
- Измените реализацию торрента, чтобы делать то, что я хочу. Кто-нибудь знаком с ними? С чего начать?
Я знаком только с ядром BitTornado (которое используется, например, в ABC). Он написан на Python, но это архитектурный беспорядок.
Однако вы можете просто взять любую реализацию и начать лишать ее ненужной функциональности.
- Реализация небольшого подмножества протокола. Просто периодически спрашивайте у сверстников, что у них есть. Это возможно или программа должна поддерживать почти полный протокол?
Обратите внимание, что вы не можете "спросить" пира, что у них есть. Другой узел информирует вас всякий раз, когда он хочет, о кусках, которые у него есть (так что это push вместо pull ). После рукопожатия BitTorrent одноранговый узел может отправить битовое поле частей, которые он имеет. После этого он может отправлять сообщения HAVE, информирующие вас о приобретении нового изделия. Также обратите внимание, что сверстники могут лгать о кусочках, которые у них есть. Примерами могут служить одноранговые узлы и такие фрирайд-клиенты, как BitThief.
Если вы хотите реализовать небольшое подмножество протокола, вам нужно как минимум внедрить сообщение рукопожатия BitTorrent и предпочтительно расширенное сообщение рукопожатия. Последнее позволяет получать (и отправлять) сообщения uTorrent PEX. PEX полезен для быстрого обнаружения других пиров в рое.
Для сбора статистики вам дополнительно необходимо поддерживать битовое поле и сообщения HAVE.