我不知道为什么这会抛出错误在解析完成之前遇到的流结束。我查看了这个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而不是二进制格式。
答案 0 :(得分:5)
好吧,你假设只有一次stream.Read
的调用会读取所有的数据。这几乎总是一个错误,特别是如果它是一个网络流。
您是否有任何理由不首先致电formatter.Deserialize(stream)
?
答案 1 :(得分:0)
这是我的错误,这里的实际代码没有错,我在客户端犯了错误。我使用Encoding.ASCII而不是二进制格式。