无法使用 protobuf-net 在 C# 中反序列化
Unable to Deserialize in C# using protobuf-net
我正在使用协议缓冲区在 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);
}
我在缓冲区中以字节为单位获取数据,但它没有在响应命令中反序列化。
我终于明白了。我没有考虑 client.Read 命令返回的接收字节的实际大小。
之后,我还倒带了 MemoryStream,感谢@neil danson
我正在使用协议缓冲区在 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);
}
我在缓冲区中以字节为单位获取数据,但它没有在响应命令中反序列化。
我终于明白了。我没有考虑 client.Read 命令返回的接收字节的实际大小。 之后,我还倒带了 MemoryStream,感谢@neil danson