を使用してネットワーク経由でファイルを送受信するプログラムで作業していますTCP
。プログラムは複数のファイルを送信するため、ユーザーがプログラムを終了するまでストリームは閉じられません。
私が直面している問題は、700 MB のファイルを送信すると、サーバー プログラムのプライベート メモリが 700,000 K にまで増大し、コンピューターのパフォーマンスが著しく低下することです。また、別の 700 MB ファイルを送信しようとすると、サーバーは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();