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

Shr*_*500 0 c# networkstream stream

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

       Console.WriteLine("Message from client ");
Run Code Online (Sandbox Code Playgroud)

提前致谢

   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();
   }
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 5

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

你有什么理由不是一开始就打电话formatter.Deserialize(stream)吗?