【发布时间】:2010-11-03 23:13:07
【问题描述】:
我想序列化一个对象并通过网络发送它。我已经在我的类和 BinaryFormatter 上使用 ISerializeable 属性设置它以将对象转换为字节。我可以发送对象并在接收端反序列化它。但是,为了确保在尝试重建对象之前拥有整个对象,我想将大小与流一起发送。我想将前几个字节设置为大小,检查接收到的数据何时至少是这个固定大小,然后我可以读取并获取对象的完整大小。然后,只需等到我收到的数据是对象的大小+固定大小的字节。如何在流中偏移我的数据,以便我可以发送一个 int 来将对象的大小存储为前几个字节,并将我的对象存储为剩余字节?
【问题讨论】:
-
拜托。对于您之前的问题(现已删除),我们刚刚确定它不是(反)序列化,而是 I/O。
-
我发送数据并关闭流。然后我逐字节地从流中读取。在流中的任何点,长度始终为一个字节。我需要能够发送长度以了解流的长度,并确保我只接收一个对象,而不是另一个对象的一部分。
-
如果你的 I/O 是正确的,格式化程序会处理长度
标签: c# serialization memorystream asyncsocket binaryformatter