我正在尝试序列化一个要发送到服务器将使用该对象的服务器的类。我正在使用Microsoft的异步客户端/服务器设置示例:http://msdn.microsoft.com/en-us/library/bew39x2a.aspx我正在使用二进制格式化程序。
为了测试这个,我正在使用这个类:
[Serializable]
class Class1
{
public int x = 10;
public string banana = "banana";
}
并尝试使用以下命令对其进行序列化:
Class1 example = new Class1();
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
formatter.Serialize(stream, example);
为了将其发送到服务器,我需要发送一个字符串:
StreamReader reader = new StreamReader( stream );
string text = reader.ReadToEnd();
server.Send(text);
stream.Close();
但这不起作用。我尝试将流转换为byte [],如here所示,但在调试器中测试时,我一直收到Stream was unreadable
异常。
答案 0 :(得分:1)
尝试
Class1 example = new Class1();
IFormatter formatter = new BinaryFormatter();
using (MemoryStream ms = new MemoryStream())
{
formatter.Serialize(ms, example);
ms.Position = 0;
StreamReader sr = new StreamReader(ms);
String text = sr.ReadToEnd();
server.Send(text);
}
我认为错过的部分是重置MemoryStream的位置以便能够读取(将其视为录制后回放的倒带)