【发布时间】:2012-09-06 18:48:48
【问题描述】:
我实现了一个使用 Socket 和线程的客户端和服务器模型
当我只想将一个字符串从客户端传递到服务器时,它可以工作。但我想传递一个对象,它会抛出这个错误: "试图反序列化一个空流"
代码如下:
客户:
ASCIIEncoding asen = new ASCIIEncoding();
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
Command command = new Command("meuLogin", "minhaSenha");
binaryFormatter.Serialize(memoryStream, command);
stream.Write(memoryStream.ToArray(), 0, memoryStream.ToArray().Length);
服务器:
byte[] message = new byte[4096];
int bytesRead = 0;
bytesRead = clientStream.Read(message, 0, 4096);
MemoryStream memoryStream = new MemoryStream(bytesRead);
BinaryFormatter bf1 = new BinaryFormatter();
memoryStream.Position = 0;
Command command = (Command)bf1.Deserialize(memoryStream);
另一个问题:我从Client复制了Command类并粘贴到Server进行反序列化。这是正确的吗?
谢谢
【问题讨论】:
-
Command类是如何定义的?请参阅codeproject.com/KB/cs/objserial.aspx 获取指导。 -
我同意 Andrey 的观点,WCF 会让你的生活变得轻松吨。
-
与@Andrey 的另一项协议:WCF 将使您的生活更加轻松。
-
我会研究这个WCF,谢谢!!
标签: c# serialization sockets