Стандартный байтовый протокол связи для передачи данных

У меня есть две программы, которые общаются друг с другом через TCP / IP, обмениваясь командами и данными (соединение уже успешно). Я ищу протокол, по которому я могу обмениваться командами (ASCII) и двоичными данными (float, double, int, char, wchar_t и т. Д.).

Есть ли какой-то стандарт для этого, который я мог бы использовать? или я должен просто изобрести свой собственный протокол для обмена вещами?

Программа написана на C ++ и Qt.

1

Решение

Если вы используете Qt, посмотрите на QDataStream http://doc.qt.io/qt-4.8/qdatastream.html

пример: http://doc.qt.io/qt-4.8/qt4-network.html

1

Другие решения

Я бы предложил использовать заголовок + данные для описания такого рода сообщений.
В заголовке вы могли бы иметь, например, поле типа сообщения и в соответствии с его значением вы можете привести содержимое данных.
Я думаю, что это не так сложно реализовать.
Когда у вас есть это, вы можете обмениваться такими структурами через все, что захотите (например, QDataStream)

1

Если вы используете Qt, этот может быть полезным

В общем, вы должны выбрать побайтовый формат, а затем сериализовать и десериализовать его в каждую сторону сокета. В противном случае вы в конечном итоге столкнетесь с проблемой либо с порядком байтов, либо с различными размерами между операционными системами (обычно 32-битные или 64-битные системы).

1
По вопросам рекламы [email protected]