Как бы я начал читать битторрентные произведения? - PullRequest
0 голосов
/ 21 сентября 2010

В настоящее время я разрабатываю библиотеку управления торрент-метаинфо для Ruby.

У меня проблемы с чтением фрагментов из файлов.Я просто не понимаю, как я должен это делать.Я знаю, что я должен SHA1 переварить фрагмент длины байт файла один раз (или прочитать фрагмент длины байт несколько раз, или как?)

Ярассчитываю на вашу помощь.Предпочитаемый код псевдо / Python / Ruby / PHP.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

C #

// Open the file
using (var file = File.Open(...))
{
    // Move to the relevant place in the file where the piece begins
    file.Seek(piece * pieceLength, SeekOrigin.Begin);

    // Attempt to read up to pieceLength bytes from the file into a buffer
    byte[] buffer = new byte[pieceLength];
    int totalRead = 0;
    while (totalRead < pieceLength)
    {
        var read = stream.Read(buffer, totalRead, pieceLength-totalRead);
        if (read == 0)
        {
            // the piece is smaller than the pieceLength,
            // because it’s the last in the file
            Array.Resize(ref buffer, totalRead);
            break;
        }
        totalRead += read;
    }

    // If you want the raw data for the piece:
    return buffer;

    // If you want the SHA1 hashsum:
    return SHA1.Create().ComputeHash(buffer);
}
0 голосов
/ 21 сентября 2010

Пожалуйста, посмотрите на этот дистрибутив здесь:

http://prdownload.berlios.de/torrentparse/TorrentParse.GTK.0.21.zip

Написанный на PHP, он содержит кодировщик и декодер, а также входные и выходные данные, я верю!

...