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

Вниз

FTP   Найти похожие ветки 

 
Tonich ©   (2005-10-11 15:33) [0]

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

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


 
Ботвин Дмитрий   (2005-10-12 13:45) [1]

Используй TIdFTP - там все понятно изначально...


 
Tonich ©   (2005-10-12 14:04) [2]

так мой клиент именного этого класа - TIdFTP , но что-то...

там есть WaitFor но это не то что мне надо, насколько я понял..

ну подскажи если знаешь, а то  
> там все понятно изначально...
мало о чем говорит


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

Если Put не вызвала исключения - то файл закачен, иначе нет :-)))


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

Инди работает тока в блокирующем режиме, поэтому нет необходимости
ожидать какого-либо события. При возникновении любой ошибки во время
приёма/передачи возникает исключение.  Если файл принят/передан успешно исключения не возникает.


 
Tonich ©   (2005-10-12 15:42) [5]


> Ботвин Дмитрий   (12.10.05 15:37) [3]
)))) как у тебя все просто слушай )))


 
Tonich ©   (2005-10-12 15:46) [6]


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

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


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

Tonich ©   (12.10.05 15:42) [5]

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


 
Tonich ©   (2005-10-12 15:50) [8]


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

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


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

Решения два:

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

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


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

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

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

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


 
Tonich ©   (2005-10-12 16:04) [11]

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

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

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


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

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


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

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

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


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

Tonich ©   (12.10.05 16:04) [11]

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


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

Tonich ©   (12.10.05 16:04) [11]

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


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

бЛинн )))

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


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

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


 
Tonich ©   (2005-10-12 16:25) [18]

ок )))


 
Tonich ©   (2005-10-13 12:24) [19]


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

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


 
Tonich ©   (2005-10-13 14:29) [20]


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

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

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

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


 
Eraser ©   (2005-10-13 14:39) [21]


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

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


 
Tonich ©   (2005-10-13 14:47) [22]


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

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


 
Eraser ©   (2005-10-13 14:53) [23]


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

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


 
Eraser ©   (2005-10-13 14:54) [24]


> Tonich ©  

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


 
Tonich ©   (2005-10-13 15:02) [25]

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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.045 c
2-1136225094
Sergey2005
2006-01-02 21:04
2006.01.22
JPG в BMP


10-1111786286
Grey_F_O_X
2005-03-26 00:31
2006.01.22
Проверка письма в outlook перед прочтением


14-1135641619
PHOTOSHOP
2005-12-27 03:00
2006.01.22
[PHOTOSHOP] Как найти цвет, которого нет?


1-1134762156
Pavel__
2005-12-16 22:42
2006.01.22
Как узнать что в системе установлен хотя бы один принтер?


2-1135804455
aleyna
2005-12-29 00:14
2006.01.22
Font Size selector





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