Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Формирование пакетов данных   Найти похожие ветки 

 
Ajax ©   (2007-01-29 11:47) [0]

Хочется услышать мнение знающих. Как лучше сделать формирование структур (например пакетов сетевых протоколов) с некоторым набором полей (могут быть переменной длины)? То есть нужно заполнить поля и получить на выходе массив байт.

Я сделал класс-буфер, имеющий метод push_back, куда передается очередное поле структуры. Когда все поля заPUSHены, получаем сформированную структуру в виде массива. Но как-то некрасиво получается IMHO.


 
tesseract ©   (2007-01-29 12:00) [1]


> получаем сформированную структуру в виде массива. Но как-
> то некрасиво получается IMHO.


Почему некрасиво? Только ещё хорошобы врерёд ней размерность её посылать.


 
Джо ©   (2007-01-29 12:03) [2]

По мне, так тоже — вполне нормальный ООП подход. Имеем данные и операции над ними в одном флаконе. Инкапсуляция-с! :)


 
Сергей М. ©   (2007-01-29 12:04) [3]


> как-то некрасиво получается IMHO


У Борланда компоненты (да и не только) сплошь и рядом реализуют LoadFromStream/SavetoStream. Считаешь, что тоже некрасиво ?


 
Ajax ©   (2007-01-29 12:48) [4]

Ну вы меня успокоили :-) Спасибо!

Я думал вдруг да есть какое стандартное средство (C++ и Java).


 
tesseract ©   (2007-01-29 12:58) [5]


> Я думал вдруг да есть какое стандартное средство (C++ и
> Java).


XML - стандартнее для передачи абстрактного вида структур не придумаешь.


 
Alex Konshin ©   (2007-01-29 14:29) [6]

Ну вот буквально один из текущих личных проектов как раз на эту тему.
Там две части - сервис на Delphi и клиент на Java. Протокол бинарный. Да, там поля пишутся один за одним. Поля переменной длины пишутся с указанием этой длины.
В принципе ничего сложного в самом этом выстраивании и чтении данных нет.
Там сложнее правильно организовать буферизацию.

Сервис у меня многопоточный с ассинхронными операциями. К тому же все шифруется.

На мой взгляд, хоть XML и моден нынче, но для таких применений слишком тяжел - неоправданно много затрат на чтение. Да и для случаев, когда двоичных данных слишком много, то на encoding-decoding тоже неоправданно много тратится.


 
tesseract ©   (2007-01-29 14:33) [7]


> Alex Konshin ©   (29.01.07 14:29) [6]


Я и не говорю, что он идеален, самому иногда ломает что-то на нём делать. Но млин "Даёшь XML c OLE "  и всё!!!!!


 
Сергей М. ©   (2007-01-29 14:37) [8]

Нафих тут XML сдался - одному tesseract"у известно)


 
tesseract ©   (2007-01-29 15:23) [9]


> Сергей М. ©   (29.01.07 14:37) [8]
> Нафих тут XML сдался - одному tesseract"у известно)


Одному заказчику :-)
Я не знаю зачем он ему нужен но уж если  очень просит......


 
Ученик чародея ©   (2007-01-29 15:31) [10]


> Alex Konshin ©   (29.01.07 14:29) [6]
>
> Ну вот буквально один из текущих личных проектов как раз
> на эту тему.
> Там две части - сервис на Delphi и клиент на Java. Протокол
> бинарный. Да, там поля пишутся один за одним. Поля переменной
> длины пишутся с указанием этой длины.


Во изврат, обычно наоборот.


 
Alex Konshin ©   (2007-01-30 00:53) [11]

И совсем не изврат. Я бы на вашем месте поостерегся быть настолько категоричным.
Зависит от толщины клиентов и списка поддерживаемых платформ. Не забываем, что помимо Windows есть и другие платформы. Из Java можно сделать далеко не все, особенно удаленно. А если и сделаешь, то неэффективно будет.
В данном случае сервис обеспечивает удаленный доступ удаленных Java клиентов к PerformanceCounters на Windows сервере, а также доступ к файлам.
Java клиенты могут быть на Unix, так что удаленный доступ к WMI или registry не прокатит.
Сервис на Delphi маленький, менее 200K и при работе памяти требует мало.

Так что для каждой задачи свои решения.



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.039 c
15-1169306037
Mr. D.
2007-01-20 18:13
2007.02.18
Показ "панели задач" при работе TMediaPlayer


2-1170054125
sergeyst
2007-01-29 10:02
2007.02.18
Визуальное наследование


15-1169811809
Real
2007-01-26 14:43
2007.02.18
WAP: Существует ли визуальный редактор WML?


2-1170323414
oleg_veles
2007-02-01 12:50
2007.02.18
Ошибка при построении запроса


1-1166801665
Джо
2006-12-22 18:34
2007.02.18
TypeLib Editor, /*Warning: unable to validate structure name: */