Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

размер не прочитанных даных в INDY   Найти похожие ветки 

 
Wapo ©   (2006-10-09 17:07) [0]

У меня при работе приложения возникает следующая сиуация.

сервер отправил клиенту неопределенного размера данные а клиент получил их. Затем произошло отключение. Со стороны клиента эти данные не нужны, как их просто очистить в буфере компонента. А то связь не отключается пока не прочитаны все данные из буфера. пробывал использовать readLn(). Но тут озникла такая ситуация в корой сервер отключается и данные не посылает. А клиент ждет их, но связи уже нет. И приложение зависает.

Подскажите как решить эту проблему или ответьте на два вопроса
1) Как узнать сколько (размер) в потоке осталось непрочианных данных
2) Как очистить этот поток (буфер)???


 
Wapo ©   (2006-10-09 17:33) [1]

Уточню немного вопрос. использую indy 10 и компонент IdTCPClient.


 
Eraser ©   (2006-10-09 18:49) [2]

> [0] Wapo ©   (09.10.06 17:07)


> сервер отправил клиенту неопределенного размера данные а
> клиент получил их. Затем произошло отключение.

для чтения неопределенного размера данных используй
IdTCPClient1.IOHandler.ReadStream(Stream, -1, true);, где Stream - любой поток данных, поддерживающий запись в себя.

> Со стороны клиента эти данные не нужны, как их просто очистить
> в буфере компонента.

просто удали поток, в который считал данные
Stream.Free; // или Clear

> А то связь не отключается пока не прочитаны все данные из
> буфера

так и должно быть!

> Но тут озникла такая ситуация в корой сервер отключается
> и данные не посылает. А клиент ждет их, но связи уже нет.
> И приложение зависает.

в таком случае, через установленный промежуток времени, возникнет исключение, которое нужно обработать.


 
Wapo ©   (2006-10-09 19:28) [3]

Позволь уточнить, правильно ли я понял.
Для того что бы удалить полученные данные нужно их дочитать полностью, но при этом нет такой возможности как узнать сколько осталось этих данных или просто сбросить их? Что то это слабое место какое то на мой взгляд. Не должно быть так.

И второй вопрос, как обработать исключение в С++ Bulder? Может кто знает.


 
Eraser ©   (2006-10-09 19:45) [4]

> [3] Wapo ©   (09.10.06 19:28)


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

все зависит от прикладного протокола. обычно размер блока данных передается непосредственно перед самими данными.
что значит "просто сбросить их"?

> И второй вопрос, как обработать исключение в С++ Bulder?
>

а что говорит по этому поводу гугл и справка?


 
Wapo ©   (2006-10-09 20:01) [5]

"просто сбросить их"

имееся ввиду то что я хочу просто удалить данные находящиеся в буфере, а работу компонента прерывать не хочу. Ну или просто пропустить определенное кол-во бит. Ну как в файле, перепрыгнуть с одой позиции на другую.

а что говорит по этому поводу гугл и справка?

ничего не нашел, примеры для Delphi написаны на сайте INDY.
Какой тип исключения обрабатывается методом catch () при ошибках и исключения в Indy?


 
Eraser ©   (2006-10-09 21:25) [6]

> [5] Wapo ©   (09.10.06 20:01)


> имееся ввиду то что я хочу просто удалить данные находящиеся
> в буфере, а работу компонента прерывать не хочу. Ну или
> просто пропустить определенное кол-во бит. Ну как в файле,
> перепрыгнуть с одой позиции на другую.

единственный выход - считать эти данные и тут же удалить.. не пойму в чем трудности.

> Какой тип исключения обрабатывается методом catch () при
> ошибках и исключения в Indy?

в справке все есть. насчет исключений в BC++ я хоть и имею общее представление, но очень уж оно общее, и чтобы тебя не вводить в заблуждение - промолчу. не сложно там.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
6-1160035146
mlm68
2006-10-05 11:59
2007.03.25
Почтовый робот


6-1160421483
sinus
2006-10-09 23:18
2007.03.25
ClientSocket


2-1173021816
pasha star
2007-03-04 18:23
2007.03.25
startup my exe


15-1172597770
Kerk
2007-02-27 20:36
2007.03.25
Преобразование выражений


15-1172554070
Сабж.
2007-02-27 08:27
2007.03.25
?!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский