Я хочу скопировать дерево каталогов через TCP-соединение.Сторона источника должна начинаться где-то в файловой системе, чтобы рекурсивно собирать все файлы и отправлять их на сторону приемника через NetworkStream.Это выглядит как-то так, как я мог бы создать ZIP-файл на стороне источника и отправить его клиенту.Но есть некоторые требования:
- Не должно быть никаких временных файлов
- В памяти не должно быть никаких файлов
- Данные должны бытьотправить в полосе.
Первые два требования могут быть выполнены путем отправки ZIP-архива через NetworkStream.Временных файлов следует избегать из-за проблем с правами доступа.Дерево каталогов может содержать огромное количество данных, что может вызвать проблемы нехватки памяти.Третье требование немного сложнее.Между источником и приемником должно быть установлено только одно TCP-соединение.
Протокол использует это же соединение перед передачей данных для обмена метаинформацией, такой как имя каталога, и после передачи данных, чтобы хотя бы подтвердить успешную передачу.и что данные были записаны в файловую систему.
Я уже пробовал SharpZipLib.Но это читает всегда куски 4 Кбайт при чтении потока.Для определения конца ZIP-архива требуется конец потока.Это неуместно, поскольку архив должен быть внутриполосным.
В документации библиотеки DotNetZip упоминается, что для нее требуется поток для поиска, чего нет у NetworkStream.
Как могут быть такие структуры каталоговпередан?
Редактировать уточнил, что данные файла должны быть встроены в тот же поток TCP.