Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.052 c
3-1163222191
Sansy
2006-11-11 08:16
2007.02.18
драйвер для BDE


15-1169567372
TIF
2007-01-23 18:49
2007.02.18
Создание своего формата файла


1-1166799546
i-am-vladko
2006-12-22 17:59
2007.02.18
file not found


2-1170357940
ZiTRaX
2007-02-01 22:25
2007.02.18
Ошибка при работе с директивой absolute


3-1164626798
Wolf82
2006-11-27 14:26
2007.02.18
Отчет в Делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский