一个简单的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("空对象");
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("空对象");
User user = obj as User;
两端同时引用他
输出的是 User
完整的是什么,和你下面的User是不是一个User?
[Serializable]
这个该怎么弄呢,新生啥也不懂你的model定义文件需要在客户端也有一份一摸一样的。你可以在客户端程序解决方案上,点击鼠标右键,选择服务器端工程里的model文件,然后不要选择“打开”而要选择“添加为链接”,例如这个图:当然你也可以总是copy文件然后分别放到不同工程里。但是保持两份,就多一倍的出错几率。