0
我正在使用協議緩衝區在C++和c#客戶端服務器應用程序之間發送和接收數據。我正在使用protobuf-net。 我有兩個原型文件,一個請求命令和一個響應命令。我能夠發送和反序列化從C#客戶端到C++服務器的命令。但我無法在c#中反序列化。 雖然我得到了c#中的字節數據,但是我得到了空的響應命令。 考慮代碼是一樣的東西如下:無法在C#中使用protobuf-net反序列化
proto.ResponseCommand rsp = new proto.ResponseCommand();
using (var data = new MemoryStream())
{
data.write (buffer,0,buffer.length);
rsp = Serializer.Deserialize<proto.ResponseCommand> (data);
}
我得到了在緩衝區內的字節數據,但它並沒有在響應命令反序列化。
不知道protobuf反序列化的實現,但它看起來像你永遠不會「倒回」內存流。嘗試設置 data.Position = 0; 其他明智的,它可能會嘗試從* current *位置讀取,它將不會返回任何數據。 –
好點,但我以前沒有改變位置反序列化。我認爲這個問題是在反序列化過程中的某個地方,因爲在這個命令之前一切都很好。 @neil danson –