Re: Большие буфера данных
От: Кодт Россия  
Дата: 06.07.04 11:51
Оценка:
Здравствуйте, vladt, Вы писали:

V>Задачка:

V>есть файл — он считывается в процедуре, обрабатывается
V>на выходе должен получиться блок данных, который содержит часть файла.
V>Вот тут возникает проблема, как представить этот блок.
V>Если делать byte *ar, то тут проблема в том, что готовый блок может быть очень очень большим и следовательно нехилый нагруз на память.

V>Важное замечание — выходной блок данных должен быть пригоден

V>для передачи по сети, те должно быть что то типа байт массива.
V>Задачка усугубляется тем, что нельзя самому писать поток по сети на приемник.

V>Кто нибудь сталкивался с такой проблемой и какие есть варианты для ее решения?


1. Хранить и обрабатывать блок на стороне сервера, и отдавать клиенту кусками, по запросу.
Как именно этот блок хранится — не особо важно. Например, в файле с произвольным доступом.

Если клиентов много, то блоки нужно уникально идентифицировать, грубо говоря, хэндлами этих файлов.
Для межмашинного взаимодействия, когда нет гарантии, что клиент отправит запрос на закрытие хэндла, — ввести срок хранения. Скажем, по истечении 10 минут после последнего запроса закрывать хэндл (и убивать блок) принудительно.

2. Хранить/передавать блок в сжатом виде. Например, с помощью zlib или, если известен характер данных, — собственным упаковщиком.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.