Эта проблема уже была решена много раз.Использовать биты, торренты, FTP и т. Д.
Основные сведения:
> инициализация сеанса
> отправка имени файла, размера фрагмента, количества фрагментов, хэша каждого фрагмента
> отправить чанк (ы) при получении сигнала.Каждый блок начинается с номера индекса фрагмента
<получить имя файла и т. Д. </p>
<выделить пустой файл с правильным именем и размером </p>
<выделить файл завершения (скажем, name.status) иесть один int на кусок.Они представляют процент завершения этого чанка </p>
<сигнал для запуска чанков с требуемыми индексами </p>
<< По мере получения каждого чанка сохраняйте его в выделенном файле в правильном месте </p>
<<После завершения каждого фрагмента подтвердите хеш.Если ошибочно пометить как 0% снова </p>
<после получения всех чанков, удалите name.status и разблокируйте выделенный файл </p>
Некоторые системы используют большие чанки и помещают имя файла, размер и т. Д. Перед всеми чанкамиТаким образом, чанки независимы и могут быть получены без инициации сеанса