1

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

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

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

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

4

1 回答 1

2

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

你可以在这里这里找到帮助。

编辑 :

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

  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);
    }
  }
于 2012-09-25T07:30:49.813 回答