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

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

IdFTP - плавающие ошибки Socket Error # 10061 и 10054 [D7, WinXP]


Страницы:   1 2

Michael ©   (2008-11-25 22:27:00) 

Доброго времени суток, форумчане!
Излагаю суть проблемы: имею проект, обращающийся к FTP-серверу на основе компонента TIdFTP. До недавнего времени все работало. Вчера начали появляться плавающие ошибки Socket Error # 10061 и # 10054. Привожу место в листинге, где появляется ошибка:
// соединяемся
   try
      f_Main.IdFTP1.Connect;
   except
      on e: Exception do begin
        // Это моя процедура отображения хода работы:
        f_Main.SendToReport(etWarning, 'Соединение не установлено!' + ' Ошибка: ' + e.Message);
        Exit;
      end;
   end;

Ошибка не является постоянной, иногда соединения проходят. Закономерность установить не удалось.
Искал в поисковиках по запросу "Socket Error # 10061".
На MSDN'е нашел расшифровку ошибок, где говорится, что
"10054  WSAECONNRESET ConnectionReset - Соединение было прервано удаленным компьютером;
10061 WSAECONNREFUSED ConnectionRefused - Соединение отклонено удаленным хостом. Это может произойти, если удаленный хост отключен или если он занят, а очередь запросов заполнена"
На тематических форумах нашел похожие проблемы, но в основном, связанные с TClient/ServerSocket. В основном советовалось проверить настройки брандмауэра или установить одинаковые порты на клиенте и сервере.
Брандмауэр Windows отключен, сторонний не используется.
Прошу помочь советом: можно ли избавится от этих ошибок и что можно сделать в моем случае для установления соединения в случае появления вышеуказанных ошибок?
Спасибо, что прочли вопрос. Если необходимо, выложу недостающие участки кода.


Palladin   (2008-11-26 11:28:00) [21]


> Юзаю бесплатный FTP-сервер, звонить, собственно, некому
> (

в каком смысле бесплатный? находящийся на каком'то хосте в интернете? что'ж тут удивлятся ошибкам...


Michael   (2008-11-26 11:24:00) [22]


> позвонить администратору сервера

Юзаю бесплатный FTP-сервер, звонить, собственно, некому (

> Именно как ? С ошибкой 100061 ?

Нет. Текст по  e.Message приходит следующий: Socket Error # 10061
Connection refused.


Сергей М.   (2008-11-26 11:16:00) [23]


> Как узнать - не сменили ли на днях у него порт доступа


Кроме сканирования активных портов с попыткой обращения к каждому найденному по ftp - никак.


> 100% попыток присоединиться к FTP-серверу завершились именно
> так


Именно как ? С ошибкой 100061 ?


Palladin   (2008-11-26 11:15:00) [24]


>  Как узнать - не сменили ли на днях у него порт доступа
> (21, как и убольшинства фтп-шников)?

позвонить администратору сервера


Michael   (2008-11-26 11:04:00) [25]


> А их у тебя разве косой десяток ?Я так понимаю, что тебе
> требуется достучаться до какого-то конкретного, который
> "капризничает", а не до любого..

Совершенно верно. Поэтому сейчас я и не знаю, что делать. Единственное достижение - это то, что ошибка 10061 перестала быть "плавающей". Сегодня - 100% попыток присоединиться к FTP-серверу завершились именно так. Что можно сделать в этой ситуации? Как проверить - "жив" еще сервер или нет? Как узнать - не сменили ли на днях у него порт доступа (21, как и убольшинства фтп-шников)?


Сергей М.   (2008-11-26 10:27:00) [26]


> ничего, кроме смены FTP-сервера, получается, в этой ситуации
> сделать нельзя?


А их у тебя разве косой десяток ?

Я так понимаю, что тебе требуется достучаться до какого-то конкретного, который "капризничает", а не до любого..


Michael   (2008-11-26 09:47:00) [27]


> с какого перепугу классы исключений библиотеки Indy будут
> в SysUtils ?

Спасибо! Я забыл подключить IdException...

A по теме ветки - ничего, кроме смены FTP-сервера, получается, в этой ситуации сделать нельзя?


Palladin   (2008-11-26 09:32:00) [28]

будь проще, прочитай справку про try/except

on e:EIdConnectException do begin

с какого перепугу классы исключений библиотеки Indy будут в SysUtils ?


Michael   (2008-11-26 09:15:00) [29]


> Сергей М. ©   (26.11.08 08:52) [4]
> on e: Exception do ShowMessage(e.ClassName + ' ' + e.Message)

Извините, если непонятно выразился в предыдущем посте. Объясню на примере. Сейчас дифференцировать ошибки приходится так:

on e: Exception do begin
       if e.ClassName = 'EIdConnectException' then ...

что не кажется мне правильным. Тем более, не могу найти все значения ClassName'ов. Искал в SysUtils'ах, где описан класс Exception.


Сергей М.   (2008-11-26 08:52:00) [30]

on e: Exception do ShowMessage(e.ClassName + ' ' + e.Message)


Michael   (2008-11-26 08:39:00) [31]

Еще возник параллельный вопрос:
как можно идентифицировать описанные ошибки?
Пока ничего кроме сравнения e.Message со строками сообщений об ошибках, в голову не приходит. А, скажем, код ошибки можно получить? Что потом, например, можно было свои сообщения пользователю отображать в зависимости от типа возникшего исключения.


Palladin   (2008-11-26 08:14:00) [32]


> что можно сделать в моем случае для установления соединения
> в случае появления вышеуказанных ошибок?

ничего, эти ошибки не является ошибками программиста


Palladin   (2008-11-26 08:14:00) [33]

ну разве что, ты не обращаешься на несуществующий сервер... или указал неверный порт...


Страницы:   1 2

Наверх

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