Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FTP


Страницы:   1 2

Tonich ©   (2005-10-11 15:33:00) 

Переформулирую свой прошлый вопрос.
Как мне определить что файл принят на сервере и отправлять следующий.

отправляю client.Put(...)
вот если бы типа что-то аналога WaitForSingleObject()


Tonich   (2005-10-13 15:02:00) [1]

в том то и дело что никаких исключений просто виснит и все (

ща попробую с TransferTimeout


Eraser   (2005-10-13 14:54:00) [2]


> Tonich ©  

Поэксперементируй со св-м TransferTimeout, поставь например 1000 и посмотри будут ли появляться ошибки (исключения).


Eraser   (2005-10-13 14:53:00) [3]


> Tonich ©   (13.10.05 14:47) [22]

Ну тут всё вроде впорядке...
Исключения не выскакивают? Просто подвисает?
Проблема скорее всего на стороне сервера.


Tonich   (2005-10-13 14:47:00) [4]


 for ii :=0 to FileList.Count-1 do
         Client.Put(FileList.Strings[ii],ExtractFileName(FileList.Strings[ii]));

вот собственно он


Eraser   (2005-10-13 14:39:00) [5]


> Tonich ©   (13.10.05 14:29) [20]

Показывай свой код с циклом- найдём ошибку.


Tonich   (2005-10-13 14:29:00) [6]


> Ботвин Дмитрий  

Сделал как ты советовал, ну всмысле запихдуть все в потом, и шо ты думаешь, заработало таки ))

Только вот почемуто , приоритет ните (треду, потоку) пришлось задать самый низкий, тохда все работае, инача же опять виснет

Так что если что всервно дай свой код посмотреть... если конечно не забыл принести....


Tonich   (2005-10-13 12:24:00) [7]


> Ботвин Дмитрий   (12.10.05 16:23) [17]

ну если что я уже на месте, так что гуди ))))


Tonich   (2005-10-12 16:25:00) [8]

ок )))


Ботвин Дмитрий   (2005-10-12 16:23:00) [9]

Завтра принесу, щас под рукой нет исходников :-)))


Tonich   (2005-10-12 16:15:00) [10]

бЛинн )))

дай кусок кода там где происходит отправка файлов.  а?


Ботвин Дмитрий   (2005-10-12 16:11:00) [11]

Tonich ©   (12.10.05 16:04) [11]

Это всё лишнее. У меня целый проект построен на TIdFTP u TIdFTPServer.
При этом у меня клиентская сторона передаёт по нескольку десятков файлов, размеров от 50б до 80Мб. Я вынес блокирующие функции в отдельный поток с прогрессором и никаких событий вообще не отслеживаю
на серваке. События как токовые в инди только в информационных целях
используются. Не выдумывай себе гемороя :-)))


Ботвин Дмитрий   (2005-10-12 16:10:00) [12]

Tonich ©   (12.10.05 16:04) [11]

Это всё лишнее. У меня целый проект построен на TIdFTP u TIdFTPServer.
При этом у меня клиентская сторона передаёт по нескольку десятков файлов, размеров от 50б до 80Мб. Я вынес блокирующие функции в отдельный поток с прогрессором и никаких событий вообще не отслеживаю
на серваке. События как токовые в инди только в информационных целях
используются. Не выдумывай себе гемороя :-)))


Tonich   (2005-10-12 16:09:00) [13]

да в том то и дело что смотрел я уже не один алгоритм там везде отправляю или забирают по одному файлу... а по одному и уменя все отлично получается (

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


Ботвин Дмитрий   (2005-10-12 16:06:00) [14]

Sleep и ProcessMessages  - тут вообще ни причём, у тебя в алгоритме косяк.
На сайте http://www.nevrona.com/indyесть пример фтп-клиента/сервера.
Скачай и посмотри, там всё понятно.


Tonich   (2005-10-12 16:04:00) [15]

я вот тут думаю может так сделать (оцени :)) )

у клиента ж есть событие TFClient.IdFTPClientStatus(ASender: TObject; const AStatus: TIdStatus; const AStatusText: String);

где AStatusпринимает одно из значений, а именно ftpReadyтак я думаю, может просто отслеживать его итолько когда оно приходит отправлять другой файл? а? как считаешь?


Tonich   (2005-10-12 16:01:00) [16]

за  TIdAntiFreeze  пасибо незнал, он действительно обрабатывает пользовательские сообщения )) Но!!
Но, отправка файлов как зависала на N файле , так и зависает..

а вот я ставил в цикле sleep(...) ну application.proce... тохда все нормально выполнялось вот!

в поток я уже раньше пробовал он вообще нифига не отправлял что-то , может что-то накрутил , ща еще раз попробую


Ботвин Дмитрий   (2005-10-12 15:54:00) [17]

Решения два:

1. Самый правильный - выносить код передачи данных (блокирующие функции) в отдельный кодовый поток.

2. Добавить на форму компонент TIdAntiFreeze - он сам всё устроит как надо, то бишь позволит обрабатывать пользовательские сообщения, т.е.
как ты говоришь "подвисать" интерфейс не будет.


Tonich   (2005-10-12 15:50:00) [18]


> Tonich ©   (12.10.05 15:46) [6]

вот это-то меня и интересует, а точнее его решение...


Ботвин Дмитрий   (2005-10-12 15:47:00) [19]

Tonich ©   (12.10.05 15:42) [5]

А ты предпочитаешь усложнить ситуацию? Инди для этого и разрабатывали,
что бы использовать все достоинства блокирующего режима, а если добавишь в приложение TIdAntiFreeze, то избавишься от единственного недостатка блокирующего режима - замораживания юзерского интерфеса
на время работы  блокирующих функций:-))


Tonich   (2005-10-12 15:46:00) [20]


> Ботвин Дмитрий   (12.10.05 15:41) [4]

хорошо, почему тохда если передавать N файлов в цикле приложение иногда просто виснит и все...
тоесть я так полагаю что происходит  новый Put в то время как еще сервер необработал старый так? или ....?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо