我正在开发一个使用TCP
. 该程序发送多个文件,因此在用户退出程序之前不会关闭流。
我面临的问题是,当我发送一个 700mb 的文件时,我的服务器程序私有内存增长到 700,000 K 并严重削弱了我的计算机性能。当尝试发送另一个 700mb 文件时,服务器会抛出一个System.OutOfMemoryException
.
有人可以告诉我我做错了什么,或者没有做什么?
服务器端代码:
using ( FileStream fs = new FileStream("dracula.avi", FileMode.Open, FileAccess.Read))
{
byte[] data = new byte[fs.Length];
int remaining = data.Length;
int offset = 0;
strWriter.WriteLine("Content-Length: " + data.Length);
strWriter.Flush();
Thread.Sleep(1000);
while (remaining > 0)
{
Thread.Sleep(10);
int read = fs.Read(data, offset, remaining);
remaining -= read;
offset += read;
}
fs.Flush();
fs.Close();
}
strm.Write(data, 0, data.Length);
strm.Flush();
GC.Collect();