为什么在解析完成之前抛出一个流结束?

时间:2012-06-20 17:57:17

标签: c# stream networkstream

我不知道为什么这会抛出错误在解析完成之前遇到的流结束。我查看了这个link,但没有任何内容可以解决我的问题。我使用断点来找到它抛出错误女巫的确切点

       Console.WriteLine("Message from client ");

提前致谢

   if (stream.DataAvailable)
   {
       byte[] buffer = new byte[10024];
       int byteCount = stream.Read(buffer, 0, buffer.Length);
       byte[] inBytes = new byte[byteCount];
       for (int counter = 0; counter < byteCount; counter++)
           inBytes[counter] = buffer[counter];
       BinaryFormatter formatter = new BinaryFormatter();
       MemoryStream memory = new MemoryStream();
       memory.Write(inBytes,0,inBytes.Length);
       object message = (object)formatter.Deserialize(memory);
       Console.WriteLine("Message from client ");
       memory.Close();
   }

编辑*这是我的错,实际的代码在这里我犯了错误在客户端。我使用Encoding.ASCII而不是二进制格式。

2 个答案:

答案 0 :(得分:5)

好吧,你假设只有一次stream.Read的调用会读取所有的数据。这几乎总是一个错误,特别是如果它是一个网络流。

您是否有任何理由不首先致电formatter.Deserialize(stream)

答案 1 :(得分:0)

这是我的错误,这里的实际代码没有错,我在客户端犯了错误。我使用Encoding.ASCII而不是二进制格式。