@gibsonman01

Как передать файл неизвестного размера?

Как принимающая сторона поймет, что наступил конец файла?
Как можно его отметить?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Rou1997
@Rou1997
Отметить можно маркерами (границами), по принципу EOF, но тогда побайтно читать придется пока цикл не достигнет маркера, лучше иначе - в заголовке передавать размер файла в байтах, а затем сам файл, но тогда надо позаботиться о безопасности так как в интернете существуют боты и их "визит" на сервер гораздо вероятнее чем думается, зачем "приходить" на случайный IP и случайный вовсе не 80-ый порт остается загадкой, но у ботов своя логика, значит надо защититься от "левых" пакетов у которых вместо заголовка будут произвольные байты и их чтение "забьет" ОЗУ на сервере и в любом случае сервер вылетит с ошибкой.
Можете посмотреть реализации HTTP, FTP.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@anikavoi
При передаче файла file.dat записываем содержимое во время передачи в file.tmp, а когда уже все передано переименовываем его в file.dat. Таким образом нужный файл появляется только тогда, когда все уже передано.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы