DataAccumulator v1.2
Компонент предназначается для обработки данных, поступающих фрагментами переменной длины.
Данные таким образом выдают события TCP_Client.onRead, TCP_Server.onRead, COMEX.onRead, WinExec.onConsoleResult/onConsoleError.
Конкретное применение - реализация различных протоколов (как существующих, так собственных) на базе TCP.
Например, для закачки файла по HTTP нужно накапливать данные ПОКА не будут получены заголовки. Затем заголовки нужно отбросить (а чаще - специально обработать для принятия дальнейших действий) и всё что осталось - сохранить в файл на диске. Это можно реализовать несколькими путями:
1) Записывать данные в MemoryStream. По завершению соединения поток сконвертировать в строку, затем разбить по двум переводам, получив заголовки и тело. Недостатки: для больших файлов нерационально (все данные накапливаются в памяти), постоянные соединения (где конец данных определяется размером, указанным в заголовках) требуют громоздкой обработки.
2) Избежать проблем предыдущего пункта путем более тщательной обработки на дискретных компонентах. Недостатки: сложность реализации.
Компонет позволяет реализовать п.2
DataAccumulator v1.2.zip
Примеры отправки файлов по сети: /post/276327
Примеры отправки скриншотов по сети: /post/277633
Ответов: 4628
Рейтинг: 749
|
|||
карма: 26 |
| ||
Голосовали: | Rysik, Assasin, miver, Konst, prostov, Gunta, strannik_nebes |
Редактировалось 6 раз(а), последний 2016-11-17 18:42:55