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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> чтение из сокета 
V
    Опции темы
skhilkov
Дата 20.7.2006, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Не могу прочитать данные из сокета. Записать могу - прочитать никак. Вот код(правда пишу по памяти, так что может ошибусь где-то):
Код

      BufferedStream bs = new BufferedStream(tcpClient.GetStream());
      bs.Write(buf,0,buf.Length);
      bs.Flush();
    //до этого момента все работает - сервер принимает сообщение
     byte[] array = new array[1024];
     int real = bs.Read(array,0,array.Length);// а на этой строчке все останавливается, хотя я точно знаю, что сервер записал в сокет данные
     


Может посоветуете что сделать, или хотя бы литературу какую-нить по этой теме? 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
mr.DUDA
Дата 20.7.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Перед тем как вызывать Read, надо бы проверить у NetworkStream-а (у того, который передали в конструктор BufferedStream-а) свойство CanRead. 


--------------------
user posted image
PM MAIL WWW   Вверх
skhilkov
Дата 20.7.2006, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пробовал, по-моему было false, а что тогда? 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
mr.DUDA
Дата 20.7.2006, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ждать, видимо smile 


--------------------
user posted image
PM MAIL WWW   Вверх
skhilkov
Дата 20.7.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



 smile  хорошо, буду ждать и искать в чем причина.... 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
skhilkov
Дата 21.7.2006, 06:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В течение 2 дней я мучил эту проблему, наконец нашел решение - использую BinaryReader. В ходе дебаговых экспериментов (!!) я выяснил, что при использовании вот этого куска кода происходит странная вещь - bufStream.ReadByte() никогда не возвращает -1, хотя в документации написано, что именно это и происходит если байт читается из конца потока. Так вот, на этом куске он прочитывал все байты(корректно), которые пришли от сервера. Функция Read тоже повисает, я так догадываюсь что возникла проблема с чтением конца потока.
Код

while (real != -1)
                {
                   real = bufStream.ReadByte();
                   count++;
                }


затем я попробовал использовать BinaryReader, вот код:
Код

                        byte[] resieved = new byte[2000];
                        BinaryReader br = new BinaryReader(netStream, cp);
                        int real = br.Read(resieved,0,resieved.Length);

Вот этот код заработал корректно, все считал и возвратил  реальное количество байт, которые записаны в сокете. И никакого вам зависания... 

Вот, может кому понадобится.
Если кто может объяснить в чем дело, я буду очень признателен!  


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

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

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

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


 




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


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

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