通过TCP传输程序集

时间:2009-03-23 16:52:28

标签: c# .net assemblies

我目前正在尝试通过TCP连接发送序列化对象,如下所示 -

BinaryFormatter formatter = new BinaryFormatter();

        formatter.Serialize(clientStream, (Object)Assembly.LoadFrom("test.dll"));

其中clientStream为

TcpClient tcpClient = (TcpClient)client;
        NetworkStream clientStream = tcpClient.GetStream();

这是发送部分。但有人能告诉我如何在客户端收到此信息(即在另一端反序列化)?

4 个答案:

答案 0 :(得分:3)

您正尝试通过线路传递程序集的内存中表示形式,而不是构成程序集文件本身的字节。这真的是你想要做的吗?

答案 1 :(得分:3)

不要序列化程序集。发送程序集本身只需将其作为文件加载并将这些字节发送到另一端。

然后,当双方都有相同的代码时,通过序列化发送对象。我相信反序列化对象的AppDomain必须加载相关的程序集(或者至少可以加载)。

答案 2 :(得分:2)

根据评论,答案完全不同。

您应该通过Location属性获取程序集的位置,然后使用FileStream读取程序集的字节并通过网络发送 ,而不是使用BinaryFormatter。

序列化程序集只会发送程序集名称。您需要发送程序集的全部内容。

答案 3 :(得分:0)

尝试使用BinaryWriter写入流式传输,并BinaryReader进行读取。