C#DatacontractSerializer over Sockets多个根元素

时间:2009-12-07 02:25:08

标签: c# silverlight sockets silverlight-3.0 datacontractserializer

我正在使用Sockets和DataContractSerializer编写Sivlerlight Chat应用程序。

我有一个可序列化对象的类层次结构,其中的定义在Silverlight客户端和C#Server之间共享。

当好友登录时,他们会向服务器发送消息,如果经过验证,则会向他们发送确认信息,然后发送几条消息,告诉他们其他人在线(以及其他一些消息)。然后客户端等待套接字并准备好字节。然后,它将尝试从结果字节流中反序列化对象。但是,由于服务器已发送多个消息,因此字节流将包含多个元素的xml,并且在反序列化时会抛出多个根异常。

使用DatacontractSerializer从Socket反序列化对象流的标准解决方案是什么?

由于

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,虽然看起来有点像hacky。

因为数据契约序列化器产生XML,我决定在每个对象之后向流中写一个额外的'\ 0'字节。然后在结束时我只需从字节流中取出(b => b!= 0)来查找对象。到目前为止这种方法有效,但似乎可能是一个我不知道的边缘情况。

...