Globalsat GALILEOSKY 5.1 [83/97] Описание протокола обмена с сервером

Globalsat GALILEOSKY 5.1 [83/97] Описание протокола обмена с сервером
Руководство пользователя GalileoSky GPS/ГЛОНАСС v5.0(0206)
ООО «НПО «ГалилеоСкай» Страница 83
12. Описание протокола обмена с сервером
Данный протокол поддерживает двунаправленный обмен данными между терминалом и сервером.
Информация передаётся по каналу GPRS с использованием протокола TCP/IP. Сервер должен иметь
статический адрес и порт для подключения терминалов в качестве клиентов.
Передача данных от терминала к серверу:
После соединения с сервером терминал передаёт первый пакет и далее основные пакеты с
данными. Каждый пакет требует подтверждения приёма с сервера, если подтверждения не
получено, терминал посылает пакет заново.
Следует обратить внимание, что TCP/IP потоковый протокол, т.е. для прикладного серверного ПО
не существует пакетов уровня TCP/IP. Чтение из сокета TCP/IP чтение потока байт, а не чтение
пакетов. Пакеты протокола GalileoSky являются пакетами прикладного уровня, для корректного их
разбора серверное ПО должно выделить буфер и осуществлять сборку пакета. Ни в коем случае
нельзя полагаться на то, что одна операция чтения из сокета вернёт полный пакет протокола
GalileoSky. Полный пакет GalileoSky может быть получен после выполнения нескольких
последовательных операций чтения, между ними могут быть временные промежутки, это связано с
особенностями работы протокола TCP/IP.
Структура первого пакета:
Поле
Размер
Заголовок 0x01
1 байт
Длина пакета
2 байта
Тэг 1
1 байт
Данные, соответствующие тэгу 1
зависит от типа тэга
Тэг N
1 байт
Данные, соответствующие тэгу N
зависит от типа тэга
Контрольная сумма
2 байта
Старший бит длины пакета является признаком наличия неотправленных данных в архиве, младшие
15 число байт в пакете. Максимальная длина пакета 1000 байт.
Передаваемые тэги задаются командой HeadPack. Длина пакета рассчитывается от первого тега до
начала контрольной суммы. Тэги идут в порядке возрастания номера. Данные и контрольная сумма
Терминал
Сервер
Первый пакет (HeadPack)
Подтверждение приёма заголовочного пакета
Основной пакет (MainPack)
Основной пакет (MainPack)
Подтверждение приёма основного пакета
Подтверждение приёма основного пакета

Содержание