Главная страница
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.053 c
15-1169883926
GrayFace
2007-01-27 10:45
2007.02.18
RSPak - пакет модулей и компонент


2-1169945216
Kostafey
2007-01-28 03:46
2007.02.18
Получение id записи


2-1170339522
Лебедев
2007-02-01 17:18
2007.02.18
Закладки


15-1169562476
default
2007-01-23 17:27
2007.02.18
Можно ли в .NET малой кровью получить регион


3-1164031051
DeadMeat
2006-11-20 16:57
2007.02.18
Совместное использование одной таблицы