Главная страница
    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.47 MB
Время: 0.097 c
15-1172946626
Vikos
2007-03-03 21:30
2007.03.25
Delphi: (дата1-дата2)-выходные=кол.дней


11-1151018833
DevilDevil
2006-06-23 03:27
2007.03.25
Smart-Linking


3-1167752894
Kley
2007-01-02 18:48
2007.03.25
SQL Запрос


15-1172574124
DrDe
2007-02-27 14:02
2007.03.25
Delphi7, компи.....


15-1172665941
Inco
2007-02-28 15:32
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский