Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#BinaryFormatter.deserialize到对象以通过套接字发送_C#_Sockets_Binaryformatter - Fatal编程技术网

C#BinaryFormatter.deserialize到对象以通过套接字发送

C#BinaryFormatter.deserialize到对象以通过套接字发送,c#,sockets,binaryformatter,C#,Sockets,Binaryformatter,我有一个客户机,它将一个类序列化为一个流,该流通过套接字到达我的服务器。 因此,我将此对象发送到我的服务器,我的服务器将通过以下操作保存“对象”: object readObject = formatter.Deserialize(stream); 它未能反序列化如下内容: 找不到程序集等 这是否意味着我的服务器无法获取该对象,将其通过几个套接字推送到其他客户端,客户端在这些客户端对其进行反序列化?服务器真的需要原始类才能反序列化到对象吗 我不希望我的服务器能够打开所有这些对象,我只希望它能够

我有一个客户机,它将一个类序列化为一个流,该流通过套接字到达我的服务器。 因此,我将此对象发送到我的服务器,我的服务器将通过以下操作保存“对象”:

object readObject = formatter.Deserialize(stream);
它未能反序列化如下内容: 找不到程序集等


这是否意味着我的服务器无法获取该对象,将其通过几个套接字推送到其他客户端,客户端在这些客户端对其进行反序列化?服务器真的需要原始类才能反序列化到对象吗

我不希望我的服务器能够打开所有这些对象,我只希望它能够为我的所有活动客户端提供广播服务

感谢您的帮助,
Smiley

假设您拥有客户端和服务器的源代码,您可以将对象的类定义提取到单独的类库项目(DLL)中,然后从客户端应用程序和服务器应用程序引用它。这样,他们两人都了解这个类,反序列化应该可以很好地工作。

例如,代码查看来自codeplex的开放源码TCPMessageServer


“服务器真的需要原始类才能反序列化到对象吗?”嗯,是的。你认为它会创建什么类型的对象?我以为对象只是某种匿名存储。在中,它可以是任何对象,直到您选择将其投射到某个对象。但很明显,这不会发生吗?不,对象绝对不仅仅是匿名存储。这样说吧-如果对反序列化的结果调用
GetType()
,您会期望发生什么?我希望它知道内部对象的类型/名称,但无法将其转换为该类型,因为它不知道它是如何构建的。如果您不需要服务器实际将数据视为对象,为什么不把它作为原始的二进制数据保存下来,并将其返回给客户机呢?