0

我正在使用 Sockets 和 DataContractSerializer 编写一个 Sivlerlight 聊天应用程序。

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

当好友登录时,他们会向服务器发送一条消息,如果他们被验证,他们会收到一条确认消息,然后是几条消息,告诉他们还有谁在线(以及其他一些消息)。然后客户端等待套接字并准备好字节。然后它会尝试从生成的字节流中反序列化对象。然而,由于服务器已经发送了多条消息,字节流将包含多个元素的 xml,并且当它被反序列化时,会引发多根异常。

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

谢谢

4

1 回答 1

0

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

因为数据协定序列化程序生成 XML,所以我决定在每个对象之后将一个额外的 '\0' 字节写入流中。然后最后我只是从字节流中获取while(b => b!= 0)来查找对象。到目前为止,这有效,但似乎有一个我不知道的边缘情况。

...

于 2009-12-07T05:16:19.343 回答