Ошибка OutOfMemoryException при передаче больших файлов - C#

Узнай цену своей работы

Формулировка задачи:

Приветствую! Используя приложение (клиент сервер), при передаче больших файлов выходит ошибка: Выдано исключение типа "System.OutOfMemoryException" Что с памятью не так?

Решение задачи: «Ошибка OutOfMemoryException при передаче больших файлов»

textual
Листинг программы
TcpListener Listen = new TcpListener(localAddr, 6999);
             
             Listen.Start();
            
             Socket ReceiveSocket;
             while (true)
             {
                 try
                 {
                     
                     ReceiveSocket = Listen.AcceptSocket();
                     Byte[] Receive = new Byte[256];
                     Byte[] paket = new Byte[12];
                     
                     
                     using (MemoryStream MessageR = new MemoryStream())
                     {
                         Int32 R=0;
                         ReceiveSocket.Receive(paket, paket.Length, 0);
                         ushort id = BitConverter.ToUInt16(paket, 0);
                         long len = BitConverter.ToInt64(paket, 2);
                         ushort nameLen = BitConverter.ToUInt16(paket, 10);
                         Byte[] dop = new Byte[nameLen];
                         ReceiveSocket.Receive(dop, nameLen, 0);
                         string fileName = Encoding.UTF8.GetString(dop, 0,nameLen);
                         
                         MessageBox.Show(fileName);
                        
 
                         //Количество считанных байт
                         Int32 ReceivedBytes;
 
                         do
                         {
                             ReceivedBytes = ReceiveSocket.Receive(Receive, Receive.Length, 0);
 
                             
                             
                             MessageR.Write(Receive, 0, ReceivedBytes);
                             
                            
 
                         } while (ReceivedBytes == Receive.Length);
                        
                         
                         using (var File = new FileStream(fileName, FileMode.Create))
                        
                        
                         {
 
 
 
                             File.Write(MessageR.ToArray(), 0, MessageR.ToArray().Length);
                             
                             
 
                             
                         }
                         
                         
                         ChatBox.BeginInvoke(AcceptDelegate, new object[] { "Received: " + fileName, ChatBox });
                     }
                 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы