使用UdpClient C#发送对象
|
我目前正在Visual Studio 2010中进行测试。我制作了一个客户端和服务器,它们都将通过UdpClient连接。
我想将一个对象从客户端发送到服务器。我有两种方法可以将对象转换为字节并将其转换为对象。现在,当我测试我的应用程序时,一旦在服务器上收到,我就无法将其转换回一个对象
我的服务器看到接收到该对象,并尝试将其从字节转换为对象,但这给出了错误。
System.Runtime.Serialization.SerializationException was unhandled Message=Unable to find assembly
这似乎可以,因为两个应用程序都位于不同的命名空间中。
这些是我的转换方法;客户端和服务器上都相同
public byte[] ToBytes() {
using (MemoryStream stream = new MemoryStream()) {
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, this);
stream.Position = 0;
byte[] byteRij = new byte[1024];
stream.Read(byteRij, 0, (int)stream.Length);
return byteRij;
}
}
public static Datagram ToDatagram(byte[] rij) {
using (MemoryStream stream = new MemoryStream()) {
stream.Write(rij, 0, rij.Length);
stream.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
return (Datagram)formatter.Deserialize(stream);
}
}
我该如何解决?
提前致谢
没有找到相关结果
已邀请:
3 个回复
肺鬼耙扮群
迪擅哨乘傅
然后只需使用ProtoBuf.Serializer.Serialize(stream,object)写入数据。 如果需要,您也可以不使用属性而工作,这需要更多的设置,但不需要太多。
埠仙俊
,但定义为
(这很愚蠢,这意味着您必须修复设计)。 Server不知道如何创建
对象,因为它不够聪明,无法发现他也定义了此类,但命名为
。 您应该使用相同的名称空间。这就是他们的目的。而且,它们使处理依赖关系更加容易。和
交谈
看起来不错;)。 我希望你明白这一点。