![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Быстро передать файл клиенту через сервер приложений (MIDAS)? [D5, D7, Win95/98, NT4, Win2k, WinXP]
Чебуратор © (2004-09-10 14:53:00)Проблема такая : необходимо передать файл клиенту через сделанный сервер приложений, как можно быстрее. Но как это сделать ? Как передать ????
Пробовал сделать тупо - в интерфейсе сервера сделал процедуру которая даёт кусочек файла клиенту (скажем 1 КБ), клиент получает кусочек и дописывает в файловый поток у себя на жёстком диске. Проблема - офигенное количество времени процессора жрётся на перекачку одного файла да и качает долго, чтобы перекачать файл в 700 метров блоками по 1 Кб надо 700000 обращений к серверу.
Вопрос : уважаемые мастера - есть ли в WinAPI интерфейсы которые я мог бы передать клиенту для управления файлом на стороне клинта ?
Или подскажите статью или материал. Вообщем приму любое решение...
Заранее спасибо.
Игорь Шевченко (2004-09-10 15:50:00) [1]Romkin © (10.09.04 15:38) [5]
> Игорь, у него связь по DCOM :)))
Упс. Вопрос был по WinAPI :))
Чебуратор (2004-09-10 15:40:00) [2]Всем спасибо. Буду читать, изучать. Должно получиться...
Romkin (2004-09-10 15:38:00) [3]Игорь, у него связь по DCOM :)))
Игорь Шевченко (2004-09-10 15:32:00) [4]
> есть ли в WinAPI интерфейсы которые я мог бы передать клиенту
> для управления файлом на стороне клинта ?
Named Pipes, например
http://www.delphimaster.ru/articles/named_pipes/index.html
Romkin (2004-09-10 15:30:00) [5]Как-как...
function GetStream(const FileName: string): IStream;
var
FileStream: TStream;
begin
FileStream := TFileStream.Create(FileName);
Result := TSreamAdapter.Create(FileStream, soOwned);
end;
Вполне должно прокатить...
Чебуратор (2004-09-10 15:25:00) [6]А что за TStreamAdapter ?
И как привязать файл к IStream ?
Romkin (2004-09-10 15:12:00) [7]НУ можно просто в variant все упаковать.
Но для этого специально есть IStream :)
Буквально - это поток. Смотри TStreamAdapter
А на клиенте с ним удобно работать через TOleStream
см CreateStreamOnHGlobal также