我目前正在尝试通过TCP连接发送序列化对象,如下所示 -
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(clientStream, (Object)Assembly.LoadFrom("test.dll"));
其中clientStream为
TcpClient tcpClient = (TcpClient)client;
NetworkStream clientStream = tcpClient.GetStream();
这是发送部分。但有人能告诉我如何在客户端收到此信息(即在另一端反序列化)?
答案 0 :(得分:3)
您正尝试通过线路传递程序集的内存中表示形式,而不是构成程序集文件本身的字节。这真的是你想要做的吗?
答案 1 :(得分:3)
不要序列化程序集。发送程序集本身只需将其作为文件加载并将这些字节发送到另一端。
然后,当双方都有相同的代码时,通过序列化发送对象。我相信反序列化对象的AppDomain必须加载相关的程序集(或者至少可以加载)。
答案 2 :(得分:2)
根据评论,答案完全不同。
您应该通过Location属性获取程序集的位置,然后使用FileStream读取程序集的字节并通过网络发送 ,而不是使用BinaryFormatter。
序列化程序集只会发送程序集名称。您需要发送程序集的全部内容。
答案 3 :(得分:0)
尝试使用BinaryWriter
写入流式传输,并BinaryReader
进行读取。