Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с BinaryReader, Зависает BinaryReader.Read(...) 
:(
    Опции темы
Water___Melon
Дата 23.5.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.10.2006

Репутация: нет
Всего: нет



Ребята подскажите, в чём моя ошибка. Не могу прочитать файл с потока. 

Происходит зависание в строке

int bytesRead = reader.Read(buffer, 0, BUFFER_SIZE);
Код
       public static void Run(string serverName, int port, string requestedFile)
       {
           try
           {
               NetworkStream serverStream = (new TcpClient(serverName, port)).GetStream();
               StreamWriter streamWriter = new StreamWriter(serverStream);
               streamWriter.Write(requestedFile);
               streamWriter.Flush();

               byte[] buffer = new byte[BUFFER_SIZE];
               BinaryReader reader = new BinaryReader(serverStream);
               FileStream fileStream = File.Create("D:\\Test");

               while(true)
               {
                   // ЗДЕСЬ ЗАВИСАЕТ
                   int bytesRead = reader.Read(buffer, 0, BUFFER_SIZE);

                   if (bytesRead != 0)
                       fileStream.Write(buffer, 0, bytesRead);
                   else
                       break;
               }

               serverStream.Close();
               fileStream.Close();
           }
           catch
           {
           }
       }

PM MAIL   Вверх
tol05
Дата 23.5.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 6
Всего: 170



Такое предположение:
Вы используете операцию чтения в синхронном режиме. Она приостанавливает поток выполнения до своего завершения. Мне кажется, что может быть два варианта:
- reader ожидает информацию для чтения, а она не поступает
- информация для чтения поступает, но ее объем меньше чем размер буфера, тогда reader будет ждать полного заполнения буфера.

Используйте операции асинхронного чтения/записи Stream.BeginRead() и Stream.BeginWrite()

Это сообщение отредактировал(а) tol05 - 23.5.2007, 09:08


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
Water___Melon
Дата 23.5.2007, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 23.10.2006

Репутация: нет
Всего: нет



Нашёл ошибку. Проблема была в том, что передавал файл с рабочего стола, а там встречались в пути русские символы. Если передавать нормальный файл, то всё в порядке. Тогда возникает другой вопрос, а как передавать любой файл?
PM MAIL   Вверх
mr.DUDA
Дата 26.5.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 2
Всего: 232



Water___Melon, проблема в том как открыть файл (FileStream) находящийся на рабочем столе ?


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.