Протокол взаимодействия приложений. Розетки. Битовая передача - PullRequest
0 голосов
/ 04 июля 2019

Есть приложение P, которое работает самостоятельно.Это приложение хранит в своей памяти некоторые данные, которые мне нужно получить.

Предположим, я хочу получать данные через веб-интерфейс.У меня есть сервер на "Колбе".Я хочу использовать приложение P в качестве источника данных.

Во время запуска определенной функции в приложении P я создаю сокет localhost (и приложение P, и сервер работают в одной системе).Во время запуска сервера я подключаюсь к сокету, открытому в Приложении P.

Каждую секунду на сервер отправляется запрос GET.Параметры запроса указывают строку вида «var1, var2, ..., varn».С помощью split (',') эта строка разбивается на список имен переменных, значения которых необходимо получить из приложения P.

Задача заключалась в разработке протокола взаимодействиямежду сервером и приложением P через сокет.

Выберите следующую структуру: [N0 ... N7] [T0] [L0 ... L22], где

N (8 бит) - номер запроса.

T (1 бит) - Тип запроса GET: 0 / SET: 1

L (23 бита) - длина данных, которые будут получены в следующем сообщении.,(вероятно, len (pickle.dumps (list_of_after_split)))

После этого поступают данные.

Вопрос: как правильно передавать биты в сокет?В конце концов, socket.send принимает только объекты типа байтов.Например, как правильно в этом случае передать длину?Или нужно самостоятельно сформировать и передать строку вида b'0xaa8000ff ', а затем проанализировать ее?

...