0

我不确定为什么这会在解析完成之前抛出错误 End of stream 。我查看了此链接,但那里没有解决我的问题。我使用断点来找到它引发错误女巫的确切点

       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 而不是 binaryformatter。

4

2 回答 2

5

好吧,您假设一次调用stream.Read将读取所有数据。这几乎总是一个错误,尤其是当它是网络流时。

你有什么理由不只是formatter.Deserialize(stream)首先打电话吗?

于 2012-06-20T17:59:07.300 回答
0

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

于 2012-06-20T19:32:54.713 回答