读书人

C#反序列化数据后应用as转换对象出错

发布时间: 2013-09-08 15:21:21 作者: rapoo

C#反序列化数据后,使用as转换对象出错
一个简单的C/S程序,使用的UDP数据报,Client端登陆时创建一个User对象,然后发送给Server端,Server端进行验证,可是Server端将Client端发来的数据反序列化后使用as转换失败,值为null。请大家帮忙看一下什么问题:

Client端:

MemoryStream memStream = new MemoryStream();
BinaryFormatter formatter = new BinaryFormatter();
//自己定义的一个与服务器端进行沟通的累
ContactWithServer contactWithServer;

formatter.Serialize(memStream, user);
data = memStream.ToArray();
contactWithServer.sendData(data,data.Length);

Server端:

data = receiveUdpClient.Receive(ref ipep); //从客户端接收数据报
memStream = new MemoryStream(data);
memStream.Seek(0, SeekOrigin.Begin);
Object obj = formatter.Deserialize(memStream);
User user = obj as User;
if(user == null)
MessageBox.Show("空对象");


当然你也可以总是copy文件然后分别放到不同工程里。但是保持两份,就多一倍的出错几率。
------解决方案--------------------


哦你使用的是 BinaryFormatter。

建议修改一下。我找到以前回复的一个帖子,请参考:http://bbs.csdn.net/topics/390552190

读书人网 >C#

热点推荐