@AnTifriZZ

Как считать поток данных в файл из NetworkStream?

привет! подскажите, пожалуйста, ни как не разберусь в проблеме:
пытаюсь считать поток данных в файл из NetworkStream
каждый раз в цикле while вывыливается в ioexception: {"Unable to read data from the transport connection: Удаленный хост принудительно разорвал существующее подключение."}
что я делаю не так?

вываливается в попытке чтения из потока: bytesRead = clientStream.Read(data, 0, bufferSize);

//********
TcpListener listener = new TcpListener(IPAddress.Any, Properties.Settings.Default.Port);
listener.Start();
 
TcpClient client = listener.AcceptTcpClient();
 
NetworkStream clientStream = client.GetStream();
//********
 
byte[] data = new byte[bufferSize]; // Создаем массив для файла
 
string fullFilename = Properties.Settings.Default.PictureDirectory + name; // Полный путь для upload
 
using (FileStream fileStream = File.Open(fullFilename, FileMode.Create, FileAccess.Write, FileShare.None))
{
   int bytesRead = 0;
   try
   {
      do
      {
         bytesRead = clientStream.Read(data, 0, bufferSize);
         fileStream.Write(data, 0, bytesRead);
      } while (bytesRead > 0);
 
      fileStream.Close();
   }
   catch (SocketException ex)
   {
      Console.WriteLine(ex.ErrorCode);
   }
   catch (IOException ex)
   {
      Console.WriteLine(ex.Message);
   }
  • Вопрос задан
  • 2796 просмотров
Пригласить эксперта
Ответы на вопрос 1
keyros
@keyros
http://about.me/keyros
Попробуйте "while (bytesRead > 0)" заменить на "while (bytesRead == bufferSize)"
т.к.
если у нас размер потока, 1025(например) байт, а размер буфера 512 байт, то сначала метод Read будет возвращать 512, а в последней итерации вернет 1
вот ссылка на MSDN
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы