Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в трехзвенке передать файл с сервера приложений? [Delphi, Windows]


bronco79 ©   (2007-05-28 17:34:00) 

Подскажите, какие есть способы передачи файла (exe, xls) с сервера приложений на клиента? Использую DCOM.


Polevi   (2007-08-06 09:00:00) [1]

http://www.rsdn.ru/article/com/marsh.xml?print


bronco79   (2007-07-19 21:45:00) [2]

Вобщем, с трехзвенкой оказалось не все так гладко...
Если подключаешься через TDCOMConnection, то можно передавать и через IStream и через массив (пробовал файлы размером до 700 Мб).
Если подключаешься через TWebConnection, то IStream не рулит (ошибка что-то вроде "Interface not supported"), мало того, похоже, что никакие наследники IUnknown при таком подключении также не поддерживаются. Но и это еще не все. Массивы данных размером 10-20 мегабайт передаются нормально, а большие не передаются - виснет намертво(вроде httpsrvr.dll, но это не точно).
Короче говоря, поскольку мне требовался универсальный механизм для трех типов подключений (TDCOMConnection, TWebConnection, TSocketConnection), пришлось реализовывать передачу через массив порциями по N килобайт.


Сергей М.   (2007-05-29 16:18:00) [3]


> Transactional Data Module такой тип не поддерживает


Зато поддерживается IUnknown.

А IStream есть наследник IUnknown.


bronco79   (2007-05-29 13:32:00) [4]

Спасибо. Буду пробовать. Правда с IStream пока не совсем ясно, т.к. Transactional Data Module такой тип не поддерживает...


Сергей М.   (2007-05-29 13:06:00) [5]

Для случая со стримом есть готовый интерфейс - IStream.
Для случая с массивом проще всего поступить так
Result := VarArrayCreate(..), где Result - это OleVariant.


bronco79   (2007-05-29 12:56:00) [6]

То есть писать интерфейс самому или что-то готовое уже есть?


Сергей М.   (2007-05-29 12:54:00) [7]


> Интересует передача содержимого


Содержимое обычно передают массивом либо стримом.


bronco79   (2007-05-29 12:52:00) [8]

Спасибо, я в курсе :-)
Интересует передача содержимого.


Сергей М.   (2007-05-29 09:58:00) [9]


> какие есть способы передачи файла


Способов передачи файла всего один - передача его имени (если это необходимо) и содержимого.

И "трехзвенка" тут совершенно ни причем.


Наверх

Титульная страница Поиск, карта сайта Написать письмо