| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > алгоритм протокола взаимодействия |
| Автор: GWTMain 20.4.2010, 12:52 | ||
| Нужно организовать протокол передачи параметр=ключ Щас как делаю, по tcp/ip с сервера шлю команды а на клиенте их парсю и вызываю нужные функции к примеру так
т.е. position_app команда(положение приложения) 150,300 соответственно координаты и end передача оконченна, т.е. выполнить Но как то это не красиво, что можно придумать изящнее? |
| Автор: Akina 20.4.2010, 14:12 |
Чем именно? Ну давай подумаем. Имя передавать надо? надо. Значение передавать надо? надо. Маркер окончания передачи нужен? нужен. Местами поменять их можно? я бы не стал. Вывод - от добра добра не ищут. |
| Автор: Akina 20.4.2010, 14:34 |
Есть и другие варианты... скажем, если набор параметров фиксирован, то вместо имени параметра можно передавать его номер, маркером окончания можно установить нулевой байт и т.п. Впрочем, на суть это никак не влияет. Хотя я бы предусмотрел возможность пакетной передачи нескольких параметров. И ввёл маркер начала пакета и поле контрольной суммы пакета. |
| Автор: Artemon 20.4.2010, 17:30 |
| объяви структуру struct SPack { BYTE IdCmd; BYTE Key; BYTE Val; }; И передавай ее в бинарном виде. Плюсы: 1. Размер всего 3 байта. 2. избавились от маркера конца. |
| Автор: Akina 20.4.2010, 17:40 |
| А если оно не лезет в байт? А как проверять целостность переданных данных? |
| Автор: Artemon 20.4.2010, 19:35 | ||||
Ответ очевиден - используем WORD.
А зачем ? Если мы считали структуру, то можно с уверенностью сказать, что данные в ней не битые, не перемешанные и т.д. |
| Автор: Akina 20.4.2010, 20:36 |
а не лезет в word - берём dword... а если надо передать полсотни байтов - чешем репу? а ты смелый... |
| Автор: GWTMain 21.4.2010, 07:11 |
| Artemon, Akina, А эта структура разными языками поддерживается, или могут быть подводные камни? |
| Автор: Artemon 21.4.2010, 07:25 | ||||||
Я исхожу из задачи и данных, которые показал топикстартер.
В C,C++,C# структуры есть. в Delphi насколько я помню тоже есть подобие структуры, только называется Record (могу ошибаться). |
| Автор: Akina 21.4.2010, 07:47 | ||
| Структуры или аналог есть почти во всех языках. Но увы - они не сильно совместимы между семействами, если не принимать доп. мер. Он не показал пример данных типа
|