Главная страница
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.03 c
15-1169382005
ChainikDenis
2007-01-21 15:20
2007.02.18
Как затормозить основной поток?


15-1169890007
Хеад
2007-01-27 12:26
2007.02.18
Запись в ini-файл ShortCut данные


2-1169915126
Garacio
2007-01-27 19:25
2007.02.18
Отдельный поток


3-1164264466
pavel_guzhanov
2006-11-23 09:47
2007.02.18
Как сделать, чтобы если в диалоге ввода логина и пароля


15-1169917017
Ученик чародея
2007-01-27 19:56
2007.02.18
Кто такой программист?