Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2013, 16:33   #1
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
Восклицание Свой простейший протокол

Здравствуйте!
Не так давно я написал программу для работы с COM портом. Я научился читать и передавать байты. Где-то (возможно даже не на этом форуме) читал сообщение от raxp примерно с таким содержанием:
Цитата:
Заведите себе за правило при работе с COM портом использовать хоть самый простейший протокол
Так вот, как организуется этот простейший протокол (я работаю с байтами)??? Если есть хорошие статьи, предлагайте.
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 05.07.2013, 18:16   #2
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

смотри ты закончил точкой.
точка - это есть конец сообщения, т.е. минимальный протокол под носом.
пробелымеждустрокамиможнотакжеотнес тикпротоколукакразделительпараметро в.
в smtp одна точка конец сообщения.
.
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.07.2013, 18:36   #3
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
По умолчанию

Интересно. То есть мне надо зарезервировать байты на начало и конец информации? Можно, но смысл от них если связаны всего два устройства?
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 05.07.2013, 19:10   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Суть протокола в том, чтобы можно было абсолютно любую информацию подстроить и передать без особых проблем в удобном виде. Ну и контролировать процесс передачи.

Например передача файла:
получаем MD5 файла
Режем файл на куски по 50 Кб.

На принимающий сервер собщаем:
Что начинаем передачу файла
Имя файла
MD5
Кол-во блоков данных

По ходу передачи блоков:
Сообщаем что продолжаем передавать блок
Сообщаем номер блока(его смещения в исходном файле)

В случае паузы, вместе с блоком сообщаем что надо встать на паузу и ждать продолжения

По окончанию сообщаем что передача завершена.

Принимающий сервер, собирает в файл и считает Md5
Если заявленное кол-во блоков равно действительному принятых то файл передан без потерь.
Если хэши совпадают, то файл передан и не испорчен.

Сообщаем результат что:
файл передан


Вот примерный протокол передачи данных.
Его возможности позволяют принимающей стороне многопоточную загрузку т.е. сервер отдает пакет данных и сообщает его смещение в исходном файле.

Ещё можно прикрепить CRC к каждому блоку данных, а по окончанию попросить отдающий сервер отдать блоки X, Y, Z, ... ещё раз.
Человек_Борща вне форума Ответить с цитированием
Старый 05.07.2013, 19:38   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

такой протокол это уже с проверкой на целостность.

простейший просто формирует данные в пакеты
-идентификатор начала пакета
-длина пакета
-данные
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2013, 20:09   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Пепел Феникса, почему-то мне кажется что проверка целостности и корректности передаваемых данных и есть сама суть создания протоколов передачи данных.
Человек_Борща вне форума Ответить с цитированием
Старый 05.07.2013, 20:13   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Пепел Феникса, почему-то мне кажется что проверка целостности и корректности передаваемых данных и есть сама суть создания протоколов передачи данных.
тогда UDP не протокол
IP не протокол и тп.

это одна из функций лишь, и то опциональная.

основная цель протоколов это структуризация.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.07.2013, 20:47   #8
vovken1997
Дружелюбный
Форумчанин
 
Аватар для vovken1997
 
Регистрация: 23.02.2012
Сообщений: 692
По умолчанию

Slym, Пепел Феникса и Человек_Борща спасибо!
Если есть ещё соображения на счёт простейшего протокола, прошу высказываться.
-==ЛЮБОЕ ЗНАНИЕ ДОСТИГАЕТСЯ ТОЛЬКО СОБСТВЕННЫМИ УСИЛИЯМИ!!!==-
vovken1997 вне форума Ответить с цитированием
Старый 05.07.2013, 20:53   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Это был наш форум. Протокол придется регистрировать в системе и используя модули Windows, SysUtils, Classes и Messages писать.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 05.07.2013, 21:40   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Это был наш форум. Протокол придется регистрировать в системе и используя модули Windows, SysUtils, Classes и Messages писать.
Вы вообще о чем?
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Свой протокол Alex_Gordon Общие вопросы Delphi 8 07.01.2012 00:13
Простейший цикл _PROGRAMM_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 28.12.2011 10:58
Простейший код :) Paramount Паскаль, Turbo Pascal, PascalABC.NET 1 14.12.2011 22:22
Простейший драйвер zumm Win Api 5 19.07.2011 05:51
Простейший фильтр. KrPr БД в Delphi 3 31.08.2010 09:47