| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Indy 10, как оборвать коннект? |
| Автор: DmitryHT 21.11.2007, 04:48 | ||
IdHttp.CreateIOHandler;
задача - разорвать соединение при получении N байт. При такой вот конструкции в 10-й версии Indy в Try Except шенерируется исключение: EidConnClosedGracefully, а переменной FContent ничего не присваивается что делать? есть какие варианты?? п.с. onWork в 10-ке работает как-то не корректно |
| Автор: Snowy 21.11.2007, 10:05 |
| Так ты же сам зачищаешь FContent... И в твоём коде я не вижу ограничения по кол-ву загруженных байт. Ну размер буфера поменял. И что это дало? |
| Автор: DmitryHT 21.11.2007, 13:05 | ||||||||
но данная констукция не всегда работает корректно, толи с днамическими сайтами у нее проблемы, толи еще с чем: для многих страниц значение AWorkCount при размере буфера в 1000 байт выдает след. значения при каждом вызове onwork - 400, 1400, 2400, 3400, 4091, а следующее снова 400. (числа взяты для примера, но они точно отражают работу функции). Поэтому пробовал также такой вариант onWork:
тут ее отличие в том, что даже если AWorkCount "сбросится", то переменная FDownloaded_size все равно получит верное число считанных байт.
Даже если не зачишать, то все равно в таком вот случае он не всегда коректно работает. |
| Автор: MetalFan 21.11.2007, 13:25 | ||
| чтото не найду примера... я приводил, как более менее корректно оборвать соединение. делать примерно так:
таким образом часть данных всетаки попадут в lStrStream |
| Автор: DmitryHT 21.11.2007, 13:40 |
| MetalFan, спасибо! и доп. спасибо за разъяснения в асе! |