【发布时间】:2017-04-13 16:04:03
【问题描述】:
我正在使用 BinaryFormatter.Serialize 方法发送 TCP 消息。我正在序列化的类的形式是:
[Serializable]
public class Message {
public int senderId;
public int metaData;
public foo moreMetaData;
public object[] message;
}
我知道,一般来说,有三种方法可以确定任何消息的结束:
- 前置大小字节
- 附加消息字节的结尾
- 固定消息长度
第三个选项似乎是个糟糕的主意。如果我使用第二个选项,我怎样才能在流中附加一个字节并且仍然能够在接收端调用 BinaryFormatter.deserialize?如果我使用第一个选项(对不起,向后浏览列表),我会遇到与选项二相同的问题(除了前置),并且我还有一个额外的问题是在序列化之前确定序列化的大小,这似乎没有序列化两次是不可能的 - 一次进入一个虚拟变量以确定大小,然后再次进入真正的流缓冲区。这里一般是做什么的?
【问题讨论】:
标签: c# serialization tcp binaryformatter