Вверх ↑
Ответов: 4630
Рейтинг: 749
#1: 2015-05-17 17:08:57 ЛС | профиль | цитата
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
карма: 26

7
Голосовали:Rysik, Assasin, miver, Konst, prostov, Gunta, strannik_nebes
Редактировалось 6 раз(а), последний 2016-11-17 18:42:55