服务器可以成功的反序列化客户端发过来的User对象,但是反序列化ScanfAppTaskInfo对象时提示:输入流是无效的二进制格式。其中User对象和ScanfAppTaskInfo对象定义在了同一个ClassLibrary中,并且生成的ClassLibrary.dll文件客户端和服务器同时都引用了,定义User类和ScanfAppTaskInfo类的时候也都同时加上了[Serializable],序列化和反序列化User对象和ScanfAppTaskInfo对象用的是相同的方法,那反序列化ScanfAppTaskInfo对象时出错会是什么原因呢?下面是分别是序列化和反序列化User对象和ScanfAppTaskInfo对象的代码
User类的定义
ScanfAppTaskInfo类的定义
初始化User对象并序列化
反序列化User对象
初始化ScanfAppTaskInfo对象并序列化
反序列化ScanfAppTaskInfo对象
画红框的地方是出错的地方,提示输入流是无效的二进制格式,错误源是mscorlib
datatable是可以序列化和反序列化的,这个我已经实现了
追答看了你反序列化的代码,发现你传的byte数组里面还包含了cmd数据。
那就明显了,你去除cmd数据时出问题了。如果去除多了或者少了,都会影响你下面的反序列化。
你可以debug下,你两次反序列化时leng的值是否一样,如果不一样,那就是leng传错了。
服务器这边已经把命令解析出来了,也进相应的case语句了,leng值是指定的,是20,不是传过来的。。
本回答被提问者采纳什么意思,在哪定义两个?
C# C\/S反序列化对象时提示:输入流是无效的二进制格式,错误源是mscorlib...
DataTable类型不支持序列化。我看到你的类里面有个DataTable dtper
c#问题:用visual studio.net 2003,大概有哪些类可用?
反序列化是接受存储的信息并用这些信息重新创建对象的过程。 ▲System.Runtime.Serialization.Formatters 提供由序列化格式化程序使用的通用枚举、接口和类。 ▲System.Runtime.Serialization.Formatters.Binary 包含可用于以二进制格式序列化和反序列化对象的 BinaryFormatter 类。 ▲System.Runtime.Serialization.Formatters.So...