-
Ребята, хотелось бы обменяться опытом, кто как делает. Вопрос в следующем. Требуется передавать по сети группу параметров и их значения. например: param1=500 param2='значение1' param3='значение2' param4=700 и т.д. Я делаю следующим образом: 1. записываю параметры в TMemIniFiles 2. TMemIniFiles сохраняю в TStringList 3. TStringList сохраняю в Tmemorystreem 4. Tmemorystreem шифрую, запаковываю и передаю по сети. 5. Принимающая сторона делает все в обратном порядке.
Какие Вы, господа, можете предложить способы передачи параметров по сети. Но параметры быть записаны Tmemorystreem. Это обязательно. Так как только в таком виде я могу запаковать и зашифровать. Жду Ваших примеров. Спасибо!
-
1. записываю параметры в TMemIniFiles 2. TMemIniFiles сохраняю в TStringList 3. TStringList сохраняю в Tmemorystreem
А зачем так многоступенчато? Чтобы процессор не застаивался?
-
> Медвежонок Пятачок ©
для этого и тему то завел! Предложите лучший вариант!
-
ну и как всегда. идет подробное описание ереси формирования тела посылки. а в конце вопрос про способы передачи его по сети.
-
Предложите лучший вариант!
Для начала исключить из огорода меминифайл
-
Затем, когда исключишь мемини, можно обойтись без стринглиста.
-
затем переставить местами вот это: 4. Tmemorystreem шифрую, запаковываю и передаю по сети.
на запаковываю, шифрую, передаю по сети.
-
> Медвежонок Пятачок © (28.04.12 14:15) [4] > > Предложите лучший вариант! > > Для начала исключить из огорода меминифайл
Пример можете привести формирования пакета?
-
пример исключения мемини?
вот: курсор в начало строки с мемини, шифт-енд - дел. Оно?
-
Ребята, прошу конкретные примеры привести, кто и как формирует пакеты. Обязательно нужно, чтобы пакет был в виде TMemoryStream. Так как именно в таком виде мы его будет шифровать и паковать.
Прошу конкретный пример?
-
> Прошу конкретный пример? ты спрашиваешь?
> Жду Ваших примеров. впечатление типа вот мой, теперь покажите ваши... но только твоего нет, есть набор слов. к тому же с ошибками.
> Ребята, прошу конкретные примеры привести, кто и как формирует пакеты. без TMemoryStream. скрипач не нужен. так что бессмысленно здесь приводить, т.к. - > Обязательно нужно, чтобы пакет был в виде TMemoryStream.
-
Ребята, пустой треп и ни одного дельного примера. Вывода два: 1. либо читающие так и не поняли суть темы 2. либо читающие и сами не знают дельного ответа
-
> и ни одного дельного примера. с тебя пример берут. ну, ладно, вот промер формирования пакета... type
TPaket = packed record
param1: integer;
param2: string[30];
param3: string[30];
param4: integer;
end;
const
Paket: TPaket = (param1:500; param2:'значение1'; param3:'значение2'; param4:700);
-
2. либо читающие и сами не знают дельного ответа
вывод три: оставь все как есть. твой код совершенен.
-
Знаю я о таком методе. И пришлось от него отказаться. Дело в том, что параметров может быть пару десятков. Но не при каждой передаче пакета, я желаю передавать эти пару десятков параметров.
Исходя из примера выше, передаются все параметры, описанные в TPaket = packed record
а это для меня не выход
-
я же говорю,- вывод номер три.
-
чиста канкретна s:= Format('param1=%u'#13#10'param2=%s'#13#10'param3=%s'#13#10'param4=%u'#13#10, [500,'значение1','значение2',700]);
ms:= TMemoryStream.Create;
try
ms.Size:= Length(s);
move(pointer(s)^, ms.Memory^, Length(s));
...
finally
ms.Free;
end; - хотя нормальные люди предпочитают бинарное пакетирование, например: ASN.1(ГОСТ Р ИСО/МЭК 8824-1) - BER, CER, DER(ГОСТ Р ИСО/МЭК 8825-1), PER... http://book.itep.ru/4/44/asn44132.htm(в том числе TLV) > без TMemoryStream. скрипач не нужен.
- ну что поделаешь, если халявные компоненты "шифрования"/компрессии для кнопкокидателей имеют только такой вход/выход...
-
> я же говорю,- вывод номер три.
еще варианты!
-
без вариантов.
-
> Исходя из примера выше, передаются все параметры, описанные в TPaket = packed record пример на то и пример, он показывает как, а не спектр возможностей... вообще тип может быть не один, а по необходимости n-oе количество, первым параметром просто ставишь признак типа... ну и делаешь базовый, только с этим признаком чтобы читать без проблем. все. остальное думаю ясно без слов.
-
http://en.wikipedia.org/wiki/Type-length-valueтак же, TLV - может расшифровываться как tag-length-value(ICQ OscarJ), где tag - идентифицирует объект/поле(предопределенного типа) для структур с опциональным содержимым... В ASN.1-PER - помимо тэгированных композитных классов(для " безверсионных" расширений протокола) - опциональные поля задаются маской(BitString) без указания тэгов(и - в случае скаляров - длины) с известным порядком следования полей... Ну... - XML(ASN.1-XER, SOAP, etc...) и JSON - в данном случае можно не рассматривать, т.к. это избыточный вариант param=value... А вот посмотреть - надо, и особенно обратить внимание на порядок передачи произвольных текстовых данных...
-
> чиста канкретна > s:= Format('param1=%u'#13#10'param2=%s'#13#10'param3=%s'#13#10'param4=%u'#13#10, > [500,'значение1','значение2',700]); > ms:= TMemoryStream.Create; > try > ms.Size:= Length(s); > move(pointer(s)^, ms.Memory^, Length(s)); > ... > finally > ms.Free; > end; >
Спасибо за классный примерчик. Подскажите примерчиком, как теперь из строки, пример: param1=500 param2=значение1 param3=значение2 param4=700
найти нужный параметр и извлечь его значение
-
Рекомендую нанять программиста - дешевле обойдется. В т.ч. времени и нервов.
-
Cobalt © козел
-
оскорблять собеседников - плохой тон! после такого, обычно идет закрытие ветки, и правильно...
-
> оскорблять собеседников - плохой тон! > после такого, обычно идет закрытие ветки, и правильно... >
посылать нанять программиста - это тоже плохой тон. я сам знаю что мне делать. А если обратился на форум, то значит прошу помощи. Если нечего сказать по оставленной мной теме, тогда следует просто промолчать
|