2009-09-23 3 views
1

Я построил библиотеку связи с использованием протокольных буферов (protobuf-net) с использованием Sockets (TcpListener и TcpClient), и он работает нормально, но теперь сотруднику необходимо написать библиотеку для связи с моим программным обеспечением, используя C++.C++ эквивалент SerializeWithLengthPrefix

Оказывается, я использую Serializer.NonGeneric.SerializeWithLengthPrefix и Serializer.NonGeneric.TryDeserializeWithLengthPrefix.

Существуют ли эквивалентные функции в библиотеках protobuf C++? Если нет, кто-нибудь знает, как его реализовать, или же он реализован для совместного использования?

ответ

2

Я не hugely знаком с C++ API; но сам префикс длины довольно прост, если вы сначала записываете данные в буфер, особенно если вы используете 32-битную кодировку с фиксированной шириной (а не base-128 переменной длины). См. Также this thread на форуме google-groups.

+0

К сожалению, связанная нить не содержит никакой информации о взаимодействии с сериализованным концом C# (de) с C/C++, когда сторона C# использует PrefixStyle.Base128. Поскольку вы упоминаете, что результирующее сообщение также является действительным сообщением protobuf, вы могли бы привести пример для двух случаев? Благодаря! – Ani