使用文件的字节数组作为字段序列化对象

时间:2012-09-25 06:59:22

标签: c# bytearray file-transfer binaryreader object-serialization

我使用客户端 - 服务器程序通过网络发送文件。在读取文件的字节(使用File.ReadAllBytes())之后,我将字节数组设置为对象的字段。然后序列化并将对象发送到客户端,客户端应该在其中反序列化对象并使用BinaryWriter获取文件。

客户端 - 服务器之间的所有消息都通过序列化一个名为Command的类的对象来传递。

当文件加载到字节数组时,此方法似乎消耗大量内存。

任何人都可以提出另一种机制,我可以一点一点地发送文件,而不会消耗太多内存。是否可以发送文件的内存地址,然后服务器使用客户端上的内存地址(使用循环)一点一点地拉动文件?

1 个答案:

答案 0 :(得分:2)

我认为最好的选择是使用流式传输。这是wcf中的原生功能。

您可以找到帮助herehere

编辑:

您可以尝试阅读&像这样发送:

  using (FileStream fs = new FileStream(@"C:\...\file.txt", FileMode.Open))
  {
    byte[] buffer = new byte[1024];
    int len;
    while ((len = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
      //client.Send(buffer, 0, len);
    }
  }