чтение из бесконечного потока
От: Аноним  
Дата: 06.07.08 05:05
Оценка:
есть веб-скрипт, который отдает бесконечно данные(cgi). я пытаюсь из него читать данные но они не читаются в прямом понимании.
вот код

using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
            using (Stream          sm   = resp.GetResponseStream())
            using (StreamReader    sr   = new StreamReader(sm, Encoding.Default))
            {
                html = sr.ReadToEnd();

                CookieContainer = request.CookieContainer;
            }


т.е. на строке sr.ReadToEnd() начинается бесконечное чтение и программа перестает дальше выполняться. не зависает
посоветуйте как быть, может поиграть с заголовками, только как?
нужно как то вычитывать данные по мере того как скрипт их отдает(cgi не мой)
Re: чтение из бесконечного потока
От: Ovl Россия  
Дата: 06.07.08 06:20
Оценка:
Здравствуйте, Аноним, Вы писали:

А>есть веб-скрипт, который отдает бесконечно данные(cgi). я пытаюсь из него читать данные но они не читаются в прямом понимании.

А>вот код

А>
А>using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
А>            using (Stream          sm   = resp.GetResponseStream())
А>            using (StreamReader    sr   = new StreamReader(sm, Encoding.Default))
А>            {
А>                html = sr.ReadToEnd();

А>                CookieContainer = request.CookieContainer;
А>            }
А>


А>т.е. на строке sr.ReadToEnd() начинается бесконечное чтение и программа перестает дальше выполняться. не зависает

А>посоветуйте как быть, может поиграть с заголовками, только как?
А>нужно как то вычитывать данные по мере того как скрипт их отдает(cgi не мой)

используйте другие методы StreamReader, у него не только ReadToEnd есть. Но в любом случае это приведет к некоему зависанию, потому что вы не можете гарантировать наличие данные для чтения.
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re[2]: чтение из бесконечного потока
От: Аноним  
Дата: 06.07.08 16:51
Оценка:
Здравствуйте, Ovl, Вы писали:

Ovl>используйте другие методы StreamReader, у него не только ReadToEnd есть. Но в любом случае это приведет к некоему зависанию, потому что вы не можете гарантировать наличие данные для чтения.


еще уточню- я проверял сниффером (http analyzer) так вот cgi content не отдает (как таковой хтмл для отображения) а пишет в stream (шо оно такое?)
т.е. хтмл не отдает поэтому ничего я по идее не смогу прочесть.
в идеале мне подошел бы вариант 1 раз прочесть из стрима и отрубиться. а через какойто момент снова прочесть но опять же как быть с "бесконечностью"?
Re[3]: чтение из бесконечного потока
От: Ovl Россия  
Дата: 06.07.08 17:34
Оценка:
А>stream (шо оно такое?)

скорее всего просто кидает данные в канал между сервером и клиентом без всякой структурированности.

А>в идеале мне подошел бы вариант 1 раз прочесть из стрима и отрубиться. а через какойто момент снова прочесть но опять же как быть с "бесконечностью"?


читать в отдельном потоке. либо использовать асинхронный Stream.BeginRead
Read or Die!
Как правильно задавать вопросы
Как правильно оформить свой вопрос
Автор: anvaka
Дата: 15.05.06
Re: чтение из бесконечного потока
От: Sinclair Россия https://github.com/evilguest/
Дата: 07.07.08 03:55
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А>т.е. на строке sr.ReadToEnd() начинается бесконечное чтение и программа перестает дальше выполняться.
Всё правильно — ты же сам сказал ей "читать до окончания потока".
Используй метод sr.Read в цикле и будет тебе щасте.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.