Эта проблема и раньше решалась много раз. Используйте BITS, Torrents, FTP и т. Д.
Основы:
> инициализация сеанса
> отправить имя файла, размер блока, количество блоков, хэш каждого блока
> отправить фрагмент (-ы) при получении сигнала. Каждый чанк начинается с номера индекса чанка.
‹Получить имя файла и т. Д.
‹Выделить пустой файл с правильным именем и размером
‹Выделить файл завершения (скажем, name.status) и иметь по одному int на каждый фрагмент. Они представляют собой процент заполнения этого фрагмента.
‹Сигнал для запуска чанков с требуемых индексов
‹* По мере получения каждого фрагмента сохранять в выделенный файл в правильном месте.
‹< По мере завершения каждого фрагмента подтверждайте хеш-код. Если ошибочно отметьте снова как 0%
‹Когда все фрагменты получены, удалите name.status и разблокируйте выделенный файл
Некоторые системы используют большие куски и помещают имя файла, размер и т. Д. Перед всеми кусками, поэтому куски независимы и могут быть получены без инициирования сеанса.
person
TFD
schedule
27.02.2011