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

Вниз

ftp-клиент, IdFTP   Найти похожие ветки 

 
workbench   (2008-08-28 15:49) [0]

Программа клиент должна в течение дня скачивать с ftp и туда же закачивать достаточно большое кол-во файлов (порядка неск. тысяч в день). Предполагается что поддерживать соединение весь день она не будет, а будет запускаться каждые 10-15 минут. Какой конструкцией можно обеспечить "надёжное соединение" c ftp (например, нужно чтобы при разрыве соединения на закачке к.-л. файла прога вновь устанавливала соединение)? Пока ничего лучше не придумал иначе как  перед каждым вызовом IdFTP.Get, Put, List и т.д проверять св-во IdFTP.Connected, то есть что-то типа того:

 if not IdFTP.Connected then ConnectToFTP;
 IdFTP.get(...);

но это наверно не совсем правильно...


 
Сергей М. ©   (2008-08-28 16:34) [1]


> это наверно не совсем правильно


Почему ?


 
workbench   (2008-08-28 16:58) [2]


> Сергей М.


м... хотя бы потому что выглядит как-то не очень красиво, но если вы считаете что это вполне нормально, то я конечно не буду париться

может подскажете тогда ответ вот на какой вопрос: при использовании того же самого компонента (IdFTP), прога "подвисает" на вызове IdFTP.Get(...), причём сервер этот по истечении 3-х минутного периода (если не было запросов) клиента "отключает", так вот при таком зависании даже после 3-х минут продолжает висеть. Очень неприятная штука, если прога запускается порядка 30 разиков в день, то соот-но может возникнуть ситуация что на серваке будет висеть такое же кол-во заглохших процессов, может кто-нить сталкивался с подобным?


 
Dennis I. Komarov ©   (2008-08-28 17:50) [3]

У меня есть служба каторая ежедневно передает туда сюда файлы по фтп
Раньше делал ее на Indy - не очень стабильно работает
На ICS - были проблемы - при вынесении логики передачи в dll большие файлы стали приходить с искажениями... (разбераться не стал)
Сейчас переделал все на "WinInet" - вроде пока без глюков...


 
Сергей М. ©   (2008-08-28 19:56) [4]


> прога "подвисает" на вызове IdFTP.Get(...)


Не трынди

"Подвисает" не "прога", а поток, в котором вызывается этот метод.

Если этот поток является основным, то шмякни на форму компонент TIdAntifreeze и донт ворри би хеппи.


 
workbench   (2008-08-29 09:47) [5]


> Сергей М.


Поток основной (и единственный), а вот IdAntifreeze мне не поможет, ибо приложение консольное (окно не нужно) и объект Application соот-но не используется.

Ещё была вот такая мысль - сделать что-то вроде контрольных точек перед закачкой и после закачки файла:

 CPoint := false;
 IdFTP.Get(...);
 CPoint := true

... и создать ещё один поток который отсчитывает время и проверяет значение CPoint, и при превышении интервала завершает процесс, это хотя бы поможет предотвратить описанную в [2] ситуацию (с зависанием n-го кол-ва экз-ов проги).


 
Сергей М. ©   (2008-08-29 10:26) [6]


> workbench   (29.08.08 09:47) [5]


Отсюда и очевидное решение - создать доп.поток и вынести в него всю работу с IdFTP.


> поток который отсчитывает время и проверяет значение CPoint


Вот это как раз можно делать в осн.потоке.



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
3-1207289402
ganda
2008-04-04 10:10
2008.10.05
Сжатие размера БД времени от времени


2-1219661561
aaaaa
2008-08-25 14:52
2008.10.05
посчитать слова


11-1193735383
tigra
2007-10-30 12:09
2008.10.05
kolindy


15-1218659598
Германн
2008-08-14 00:33
2008.10.05
Помогите, кто может! Сдать зачёт.


15-1218549474
Dmitry S
2008-08-12 17:57
2008.10.05
Как выразить битовую операцию or с помощью сложения и умножения?





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