Другие языки программирования и технологии

Есть ли какие-либо стандарты по упаковки потока данных для передачи файлов?

Есть ли какие-либо стандарты по упаковке потока данных для передачи файлов?
По типу сначала имя файла, метаданные, сами данные файла и тд
Или как это всё происходит, желательно ссылки на статьи или хотя бы дайте направление где можно найти что-то полезное
Машраб Xxx
Машраб Xxx
750
Стандарт по упаковке потока файлов называет tar - tape archive. 40 лет работает под юниксами, изначально архивировал файлы на ленту
Для упаковки потока (не важно чего) можно использовать gzip. Его понимают буквально все.
Есть поновее, поэффективнее bzip2. То же самое, но он сложнее.

В сумме получаем примерно любимый zip, только чтобы распаковать zip нужно получить весь файл целиком, а здесь фишка в том, что можно распаковывать потоком прямо из сети. Например, при наличии на диске 11Гб свободного места вполне можно принять и распаковать10Гб архив.
Константин Селиверстов
Константин Селиверстов
15 498
Лучший ответ
Василий Меньшиков Zip замечательно распаковывается на лету. И запаковывается вроде тоже. Просто обычный софт, которым все пользуются, не поддерживает этот режим.
есть протоколы, но они разные, и можно создать свои
Алексей Байков
Алексей Байков
92 464
Файлы можно запаковывать в zip-архив. Это может работать в потоке. Не обязательно использовать сжатие. Это не стандарт, просто один из вариантов.
можно на хотя бы тот же простой и понятный FTP протокол посмотреть, а дальше уже рассмотреть другие виды
Артём Нефедьев
Артём Нефедьев
34 259
Машраб Xxx Я просто пока сам разбирался как сделать передачу файлов что-то да надумал, то есть например передача разбивается на 2 части, в первой передаётся вес файла, а во второй уже имя; метаданные; данные. И у меня в принципе всё работало, но вот как это работает у других я понятия не имею. Да тот же самый фтп. Что написано на вики, передача файла идёт байт за байтом. И это многого не даёт. Вот например как тот же самый браузер всегда понимает что у файла отвечает за имя, что за вес, где сами данные, он ведь всегда трактует это правильно, значит должен быть какой-то стандарт, но вот найти какой-то более подробной информации что да как я не могу
Нет никаких стандартов. Всё вытекает из логики и потребностей твоей программы.

1. Можно передавать по UDP, можно по TCP.
2. Можно заголовок представлять в виде "упакованной" структуры, а можно в виде выравненной по 4/8/16 байт (а).
3. Значения полей можно передавать как Little Endian или Big endian.

https://en.wikipedia.org/wiki/Endianness#Networking

В HTTP, FTP, SMTP избавились от проблем со структурами, передавая метаданные в виде обычного текста. Jabber-клиенты (ICQ, QIP, и т. п.) передают всё в XML. И вообще, сейчас прямо какая-то мода всё передавать в XML/JSON.
Баха .
Баха .
26 548