无法使用 protobuf-net 在 C# 中反序列化

Unable to Deserialize in C# using protobuf-net

本文关键字:反序列化 protobuf-net      更新时间:2023-10-16

我正在使用协议缓冲区在 C++ 和 C# 客户端服务器应用程序之间发送和接收数据。我正在使用protobuf-net。我有两个原型文件,一个请求命令和一个响应命令。我能够将命令从 c# 客户端发送和反序列化到 c++ 服务器。但是我无法在 c# 中反序列化。我正在获取 c# 中的字节数据,但我得到空响应命令。考虑代码如下所示:

    proto.ResponseCommand rsp = new proto.ResponseCommand ();
    using (var data = new MemoryStream ())
    {
    data.write (buffer,0,buffer.length);
    rsp = Serializer.Deserialize<proto.ResponseCommand> (data); 
    }

我在缓冲区中以字节为单位获取数据,但它不会在响应命令中反序列化。

我终于想通了。我没有考虑客户端返回的接收字节的实际大小。读取命令。之后,我还倒带了MemoryStream,感谢@neil danson