我曾使用 BinaryFormatter 通过 NetworkStream 序列化对象 像这样的代码
//OpenConnection ...
TCPClient client = server.AcceptTCPConnection();
Message message = new Message("bla bla"); // This is the serializable class
NetworkStream stream = client.GetStream(); // Get Stream
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(stream, message);
stream.Flush();
stream.Close(); //Close Connection
而在客户端代码中,我们只需要从流中读取
bf.Deserialize(stream) as Message
来获取我们刚刚从服务器发送的对象。
但是这里有一个问题,如果我删除stream.Close();
了客户端无法读取这个对象的行。或者我可以更改为stream.Dispose();
但是,我想再次使用此流发送另一个Message
,我该怎么办?请帮忙,这让我感到很头疼@@
更新: 我找到了这个问题的原因。因为我用一台机器同时运行客户端和服务器。它肯定在两台不同的机器上运行良好。有人可以告诉我为什么吗?几天前遇到大问题。