Показать сообщение отдельно
  #1  
Старый 20.02.2011, 16:47
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Вопрос по поводу приема объединеных структур и их разделение

Здравствуйте, возник такой вопрос:
Я начал писать клиент-серверное приложение и решил передавать данные с помощью разных структур. В интернете читал, искал примеры, но подходящие были связаны лишь с работой со строками.
Но у меня же всё иначе.
Для начала первый вопрос:
1.1 например имеем заранее известную структуру, допустим такую:
Код:
TMyStructure = packed record
A:Byte;
B:Single;
C:Integer;
end;
Когда одновременно клиенту приходит несколько одинаковых блоков одной и той же структуры, то их мне получается необходимо разделить на различные и каждую обработать соответственно. НО !
1.2 Учесть, что если вдруг сразу не придет целиком одна структура.
(т.е. её необходимо дочитать до полной структуры).
2) всё также, как и в первом вопросе, но только мы допустим имеем несколько различных структур, как их правильно принять и разделить ?
______
Исходя из того, что я читал, мне получается нужно ввести какую-то уникальную сигнатуру каждого пакета(или точнее структуры), что если структура допустим первая, то у нее:
Код:
TMyStructure = packed record
sign:Byte; // Сигнатура
A:Byte;
B:Single;
C:Integer;
end;
если вторая, то:
Код:
TMyStructure2 = packed record
sign:Byte; // Сигнатура
A:String[20];
B:Integer;
C:array[1..10] of Single;
end;
И мы соответственно при передаче структур этих заполняем Sign для первой = 1, для второй структуры Sign = 2;
В общем нужен какой-то разделить или что-то подобное сигнатуры.
И ещё вопрос насчет пункта 1.2: если структура небольшого размера, то вообще возможно ли такое, что она прийдет не вся целиком ? скорее всего возможно, поэтому я и задал этот вопрос.
Помогите пожалуйста разобраться.
___
Ах да, ещё у меня такая мысль была, что если передавать массив байт, а в конце например сигнатуру FF FF FF, но будет довольно сложно каждый тип данных привести из байт к своему, например тотже Single из байт в Single и наоборот, также с каждым типом.
Хотя эта идея мне кажется интересной. Помогите может какие идеи насчет этого есть. Т.к. Этот способ кажется попроще, но и возникает проблема с преобразованием байт в соответствующие типы. С нетерпением жду ответов.
__________________
Если Вы находите ошибки, исправить которые дело долгое и нудное, ничего не делайте - просто внесите их в список особенностей
Ответить с цитированием