2009-09-23 112 views
1

我使用Sockets(TcpListener和TcpClient)使用Protocol Buffers(protobuf-net)構建了一個通信庫,它工作正常,但現在同事需要編寫一個庫來與我的軟件進行通信C++。C++等價於SerializeWithLengthPrefix

原來我正在使用Serializer.NonGeneric.SerializeWithLengthPrefixSerializer.NonGeneric.TryDeserializeWithLengthPrefix

protobuf C++庫中是否有等價函數?如果沒有,任何人都知道如何實施它,或者實施它來分享?

回答

2

我不是巨大熟悉C++ API;但是如果您首先將數據寫入緩衝區,那麼長度前綴本身就非常簡單,尤其是如果使用固定寬度的32位編碼(而不是基於128的可變長度)。請參閱google-groups論壇上的this thread

+0

不幸的是,當C#端使用PrefixStyle.Base128時,引用的線程不包含與C/C++中的C#(de)序列化結尾互操作的任何信息。既然你提到由此產生的消息也是一個有效的protobuf消息,你能舉兩個例子嗎?謝謝! – Ani 2015-12-05 05:45:56