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

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

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

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

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

textual
Листинг программы
  1. TcpListener Listen = new TcpListener(localAddr, 6999);
  2.              
  3.              Listen.Start();
  4.            
  5.              Socket ReceiveSocket;
  6.              while (true)
  7.              {
  8.                  try
  9.                  {
  10.                      
  11.                      ReceiveSocket = Listen.AcceptSocket();
  12.                      Byte[] Receive = new Byte[256];
  13.                      Byte[] paket = new Byte[12];
  14.                      
  15.                      
  16.                      using (MemoryStream MessageR = new MemoryStream())
  17.                      {
  18.                          Int32 R=0;
  19.                          ReceiveSocket.Receive(paket, paket.Length, 0);
  20.                          ushort id = BitConverter.ToUInt16(paket, 0);
  21.                          long len = BitConverter.ToInt64(paket, 2);
  22.                          ushort nameLen = BitConverter.ToUInt16(paket, 10);
  23.                          Byte[] dop = new Byte[nameLen];
  24.                          ReceiveSocket.Receive(dop, nameLen, 0);
  25.                          string fileName = Encoding.UTF8.GetString(dop, 0,nameLen);
  26.                          
  27.                          MessageBox.Show(fileName);
  28.                        
  29.  
  30.                          //Количество считанных байт
  31.                          Int32 ReceivedBytes;
  32.  
  33.                          do
  34.                          {
  35.                              ReceivedBytes = ReceiveSocket.Receive(Receive, Receive.Length, 0);
  36.  
  37.                              
  38.                              
  39.                              MessageR.Write(Receive, 0, ReceivedBytes);
  40.                              
  41.                            
  42.  
  43.                          } while (ReceivedBytes == Receive.Length);
  44.                        
  45.                          
  46.                          using (var File = new FileStream(fileName, FileMode.Create))
  47.                        
  48.                        
  49.                          {
  50.  
  51.  
  52.  
  53.                              File.Write(MessageR.ToArray(), 0, MessageR.ToArray().Length);
  54.                              
  55.                              
  56.  
  57.                              
  58.                          }
  59.                          
  60.                          
  61.                          ChatBox.BeginInvoke(AcceptDelegate, new object[] { "Received: " + fileName, ChatBox });
  62.                      }
  63.                  }

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы