Рекомендации по соглашениям о вызове функций при использовании сокетов
-
27-10-2019 - |
Вопрос
Я планирую использовать сокеты для выполнения вызовов функций между клиентским 32-разрядным приложением и 64-разрядным приложением.
Какова была бы наилучшая схема для вызова функций, передачи переменных и возврата параметров через интерфейс сокета.У меня есть контроль как над клиентским, так и над серверным кодом, поэтому я могу реализовать все, что угодно.
Я думал о том, чтобы пакет сокетов состоял из:- 1 слово:длина (# символов) имени функции - строка:фактическое название функции - 1 слово:длина (в байтах) параметров функции - параметры функции
Пожалуйста, дайте мне знать, какие подходы были бы наиболее надежными и расширяемыми.Возможно, я смогу повторно использовать принципы, используемые соглашениями о вызовах компиляторами, веб-службами или виртуальными машинами.
Заранее спасибо
Решение
Я предлагаю вам использовать буферы протокола для сериализации:
http://code.google.com/apis/protocolbuffers/docs/reference/cpp/index.html
Учебник:
http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html
Когда вы отправляете объект на другую сторону, начните с префикса длины (32bit int), который определяет, сколько байт вы должны прочитать, чтобы получить полное сообщение protobuf.