Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 12:08   #1
AS10
 
Регистрация: 14.09.2009
Сообщений: 4
По умолчанию IdFtp зависает в процесе работы :(

Delphi2009 + WinXP
IdFtp зависает в процесе работы
вернее не виснет, а просто останавливается без генерации исключений (каких либо)

останавливается на выполнении .List , .Get
в случайных местах, в разных каталогах, на скачке разных файлов
в случае List - просто останавливается выполнение
в случае Get - создается файл получатель размер 0 и останавливается выполнеие

то что при одном запуске может отработать нормально - может не отработать при след запуске

пробовал работать как в основном потоке так и в отдельном

в ReadTimeout, TransferTimeout прошу не тыкать носом - проверял в разных вариантах

Может кто сталкивался - черканите как решили проблему.

З.Ы. Ща смотрю в сторону использования не Инди компонент - мож кто чего посоветует.
AS10 вне форума Ответить с цитированием
Старый 10.08.2010, 00:35   #2
LPFinch
Новичок
Джуниор
 
Регистрация: 10.08.2010
Сообщений: 1
По умолчанию

Компонент IdFTP включает полную поддержку протокола передачи файлов — FTP (File Transfer Protocol). Поддерживается пассивная и активная передача данных, а также такие операции, как GET и PUT, удаление директорий, получение квот, размеров файлов и каталогов. В своей работе TIdFTP использует класс TIdSimpleServer. Когда выполняется передача файла по протоколу FTP, вторичное соединение по протоколу TCP открыто для передачи данных и закрывается, когда данные были переданы. Такое соединение называется «канал передачи данных», уникальный для каждого передаваемого файла. С компонентом IdAntiFreeze другая история... Indy использует работу с сокетами в блокирующем режиме. Блокирующий режим подобен чтению-записи файла. При чтении данных или записи функция не возвращает управления до окончания операции. Отличие от работы с файлами состоит в том, вызов может быть более долгим, поскольку запрошенных данных еще нет, это зависит скорости, с какой работает сеть или модем. Вызов блокирующего сокета не возвращает управления, пока не выполнит свою задачу. Когда такой вызов делается в главном потоке приложения, приложение не может обрабатывать пользовательские сообщения. Из-за этого пользовательский интерфейс замораживается, не обновляются окна, и другие сообщения не могут быть обработаны пока управление не будет возвращено из блокирующего сокета. Короче, интерфейс подвисает... TIdAntiFreeze работает по внутреннему таймеру вне стека вызовов и вызывает Application.ProcessMessages по окончанию таймаута. Внешние вызовы к Indy продолжают оставаться блокирующими и поэтому работают точно также как и без использования
компонента TIdAntiFreeze. Использование TIdAntiFreeze позволяет получить все преимущества блокирующих сокетов, без из недостатков. Просто положи компонент IdAntiFreeze на форму и не меняй никаких его свойств - интерфейс не будет подвисать..
LPFinch вне форума Ответить с цитированием
Старый 16.03.2012, 16:14   #3
dayser
Новичок
Джуниор
 
Регистрация: 16.04.2010
Сообщений: 1
Хорошо

Цитата:
Сообщение от LPFinch Посмотреть сообщение
Компонент IdFTP включает полную поддержку протокола передачи файлов — FTP (File Transfer Protocol). Поддерживается пассивная и активная передача данных, а также такие операции, как GET и PUT, удаление директорий, получение квот, размеров файлов и каталогов. В своей работе TIdFTP использует класс TIdSimpleServer. Когда выполняется передача файла по протоколу FTP, вторичное соединение по протоколу TCP открыто для передачи данных и закрывается, когда данные были переданы. Такое соединение называется «канал передачи данных», уникальный для каждого передаваемого файла. С компонентом IdAntiFreeze другая история... Indy использует работу с сокетами в блокирующем режиме. Блокирующий режим подобен чтению-записи файла. При чтении данных или записи функция не возвращает управления до окончания операции. Отличие от работы с файлами состоит в том, вызов может быть более долгим, поскольку запрошенных данных еще нет, это зависит скорости, с какой работает сеть или модем. Вызов блокирующего сокета не возвращает управления, пока не выполнит свою задачу. Когда такой вызов делается в главном потоке приложения, приложение не может обрабатывать пользовательские сообщения. Из-за этого пользовательский интерфейс замораживается, не обновляются окна, и другие сообщения не могут быть обработаны пока управление не будет возвращено из блокирующего сокета. Короче, интерфейс подвисает... TIdAntiFreeze работает по внутреннему таймеру вне стека вызовов и вызывает Application.ProcessMessages по окончанию таймаута. Внешние вызовы к Indy продолжают оставаться блокирующими и поэтому работают точно также как и без использования
компонента TIdAntiFreeze. Использование TIdAntiFreeze позволяет получить все преимущества блокирующих сокетов, без из недостатков. Просто положи компонент IdAntiFreeze на форму и не меняй никаких его свойств - интерфейс не будет подвисать..
спасибо огромное. действительно очень полезное сообщение. Долго искал подобное =)
dayser вне форума Ответить с цитированием
Старый 14.01.2013, 17:58   #4
barbaris.co
Новичок
Джуниор
 
Регистрация: 14.01.2013
Сообщений: 1
По умолчанию

У меня такая же ситуация. АнтиФриз не помогает. При выполнении List все замирает. Не помогает ничего, кроме убийства программы. Какие еще могут быть варианты?
barbaris.co вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IDFTP не показывать ошибку. sergeyrulit Общие вопросы Delphi 1 02.06.2010 02:33
idftp процесс скачивания Gumer Общие вопросы Delphi 2 02.05.2010 15:18
Вопрос по idFTP Johnson Работа с сетью в Delphi 3 09.11.2009 13:07
idFTP и TreeView vitawt Работа с сетью в Delphi 3 21.02.2009 02:04
Проблема с IDFTP esy Работа с сетью в Delphi 4 04.12.2008 18:22