Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

соединение с FTP по списку

16K
09 ноября 2006 года
CCCP
10 / / 10.08.2006
Задача стояла следущая - при неудачном соединении с серврером перебирать сервера по списку до удачного соединения.
Реализовал перехватывая любую ошибку при соединении:

Код:
void __fastcall TMain::Connaction()
{
 op:
 try
  {
   FTP->Host = tools->host;
   FTP->UserID = tools->login;
   FTP->Password = tools->pass;
   FTP->Port = tools->port;
   if(tools->pasiv)FTP->Passive = true;
   else FTP->Passive = false;
   //RSAdd - добавлние строки в RichEdite
   RSAdd("Соединяемся по адрессу: "+FTP->Host+", порт: "+IntToStr(FTP->Port),fsBold,clGreen,RS);
   
   FTP->Connect();
  }
 catch(...)
 {
 
  RSAdd("Ошибка соединения!!! С по адрессу: "+tools->host+", порт: "+IntToStr(tools->port),fsBold,clRed,RS);
 
  // list - StringList, count - номер записи
  count+=2;
  if(count>list->Counht)return;

  tools->host = list->String[count];
  tools->port = list->String[count+1];
 
  goto op;

 }
}



До рабочего сервера в списке доходит, но при этом перебирает спикок сотни раз. Подскажите какую проверку вставить чтоб он не лапатил список зря.


P.S. Ловить какое-то другое событие (InvalidHost,HostResolved и т.д.) не стал. Так как сразу сделал проверку при каких ситуациях, что срабатывает
- никакой закономерности не нашёл! При отсутствии хоста вылетает ConnectionFailed, повторяю попытку - уже ConnectionFailed молчит, а срабатыает
FTPError (ошибка 10022). При рабочем сервере, но на другом порту - ни одно из имеющихся событий в TNMFTP не сработало, выкинуло окно с ошибкой - "Connction Timed out". А учесть надо все ситуации.
1
11 ноября 2006 года
kot_
7.3K / / 20.01.2000
[QUOTE=CCCP]Задача стояла следущая - при неудачном соединении с серврером перебирать сервера по списку до удачного соединения.
Реализовал перехватывая любую ошибку при соединении:

Код:
void __fastcall TMain::Connaction()
{
 op:
 try
  {
   FTP->Host = tools->host;
   FTP->UserID = tools->login;
   FTP->Password = tools->pass;
   FTP->Port = tools->port;
   if(tools->pasiv)FTP->Passive = true;
   else FTP->Passive = false;
   //RSAdd - добавлние строки в RichEdite
   RSAdd("Соединяемся по адрессу: "+FTP->Host+", порт: "+IntToStr(FTP->Port),fsBold,clGreen,RS);
   
   FTP->Connect();
  }
 catch(...)
 {
 
  RSAdd("Ошибка соединения!!! С по адрессу: "+tools->host+", порт: "+IntToStr(tools->port),fsBold,clRed,RS);
 
  // list - StringList, count - номер записи
  count+=2;
  if(count>list->Counht)return;

  tools->host = list->String[count];
  tools->port = list->String[count+1];
 
  goto op;

 }
}



До рабочего сервера в списке доходит, но при этом перебирает спикок сотни раз. Подскажите какую проверку вставить чтоб он не лапатил список зря.


P.S. Ловить какое-то другое событие (InvalidHost,HostResolved и т.д.) не стал. Так как сразу сделал проверку при каких ситуациях, что срабатывает
- никакой закономерности не нашёл! При отсутствии хоста вылетает ConnectionFailed, повторяю попытку - уже ConnectionFailed молчит, а срабатыает
FTPError (ошибка 10022). При рабочем сервере, но на другом порту - ни одно из имеющихся событий в TNMFTP не сработало, выкинуло окно с ошибкой - "Connction Timed out". А учесть надо все ситуации.[/QUOTE]
Для таких задач в событии компонента существует событие onFailure - в нем и нужно обрабатывать ошибки соединения в том числе. Более подробно смотри $(BCB)\Examples\FastNet\FTP
16K
13 ноября 2006 года
CCCP
10 / / 10.08.2006
Дело не в том чтоб найти где обрабатывать, а в том как обрабатывать. Там где я перехватываю все ошибки ловятся. На ConnactionFailed те же проблемы - не знаю как определить, что компонент уже прекратил соединяться, уже не занят. Получается - он ещё не прекратил это неудачное соединение, а его ещё раз заставляю соединяться. Где отслеживать активность компонента я не нашёл, параметр Status - показыавет есть соединение с сервером, или нет.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог