Конференция "Сети" » IdFTP - плавающие ошибки Socket Error # 10061 и 10054 [D7, WinXP]
 
  • Michael (25.11.08 22:27) [0]
    Доброго времени суток, форумчане!
    Излагаю суть проблемы: имею проект, обращающийся к 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 © (26.11.08 08:14) [1]

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

    ничего, эти ошибки не является ошибками программиста
  • Palladin © (26.11.08 08:14) [2]
    ну разве что, ты не обращаешься на несуществующий сервер... или указал неверный порт...
  • Michael (26.11.08 08:39) [3]
    Еще возник параллельный вопрос:
    как можно идентифицировать описанные ошибки?
    Пока ничего кроме сравнения e.Message со строками сообщений об ошибках, в голову не приходит. А, скажем, код ошибки можно получить? Что потом, например, можно было свои сообщения пользователю отображать в зависимости от типа возникшего исключения.
  • Сергей М. © (26.11.08 08:52) [4]
    on e: Exception do ShowMessage(e.ClassName + ' ' + e.Message)
  • Michael (26.11.08 09:15) [5]

    > Сергей М. ©   (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.
  • Palladin © (26.11.08 09:32) [6]
    будь проще, прочитай справку про try/except

    on e:EIdConnectException do begin



    с какого перепугу классы исключений библиотеки Indy будут в SysUtils ?
  • Michael (26.11.08 09:47) [7]

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

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

    A по теме ветки - ничего, кроме смены FTP-сервера, получается, в этой ситуации сделать нельзя?
  • Сергей М. © (26.11.08 10:27) [8]

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


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

    Я так понимаю, что тебе требуется достучаться до какого-то конкретного, который "капризничает", а не до любого..
  • Michael (26.11.08 11:04) [9]

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

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

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

    позвонить администратору сервера
  • Сергей М. © (26.11.08 11:16) [11]

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


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


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


    Именно как ? С ошибкой 100061 ?
  • Michael (26.11.08 11:24) [12]

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

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

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

    Нет. Текст по  e.Message приходит следующий: Socket Error # 10061
    Connection refused.
  • Palladin © (26.11.08 11:28) [13]

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

    в каком смысле бесплатный? находящийся на каком'то хосте в интернете? что'ж тут удивлятся ошибкам...
  • Сергей М. © (26.11.08 11:35) [14]

    > Connection refused


    Верь глазам своим - попытка соединения отвергнута сервером.

    А вот ошибка с кодом 100054 возникает уже после успешного коннекта, и она означает партнер по соединению закрыл соединение по своей инициативе, в момент когда ты осуществляешь попытку инф.обмена с ним.
  • Michael (26.11.08 11:48) [15]

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

    Именно так. К этому и относилась мысль, что видимо, придется перейти на какой-нибудь платный сервер. Хоть позвонить в случае чего будет кому...
    > Верь глазам своим - попытка соединения отвергнута сервером.
    > А вот ошибка с кодом 100054 возникает уже после успешного
    > коннекта, и она означает партнер по соединению закрыл соединение
    > по своей инициативе, в момент когда ты осуществляешь попытку
    > инф.обмена с ним.

    Спасибо, я на MSDN'е расшифровку ошибок нашел. Не нашел только - что с этим теперь делать. Т. е. как достучаться до  сервера, если он отклоняет соединения? В смысле, возможно ли это теоретически?
  • Palladin © (26.11.08 11:57) [16]

    > Т. е. как  достучаться до  сервера, если он отклоняет соединения?

    это типа "как же войти в дверь? а там какой то мужик меня не пускает" :)
  • Сергей М. © (26.11.08 11:58) [17]

    > Michael   (26.11.08 11:48) [15]


    А сам хост-то, на котором работает ftp-сервер, доступен ?
    Ты его пинговал-трассировал ?
    И что говорит стандартный виндовый telnet-клиент по поводу попытки

    open имя_или_адрес_хоста_с_FTP_сервером 21

    ?
  • Anatoly Podgoretsky © (26.11.08 13:26) [18]
    > Michael  (26.11.2008 11:24:12)  [12]

    Так ты хакер? Хакерам вход на сервер не разрешен.
  • Michael (26.11.08 14:19) [19]

    > А сам хост-то, на котором работает ftp-сервер, доступен
    > ?

    Да, доступен. Более того, я могу зайти на FTP-сервер через панель управления сайтом. Настройки никакие не менял, а "извне" достучаться стало невозможно.


    > Так ты хакер? Хакерам вход на сервер не разрешен.

    Что ж Вы так сразу? Я тут в поисках ответа книгу "Indy in depth" прочел...)))
  • Сергей М. © (26.11.08 14:46) [20]

    > могу зайти на FTP-сервер через панель управления сайтом


    Это как ?
    Рассказывай подробно ..
  • Michael (26.11.08 20:29) [21]

    > Это как ?Рассказывай подробно ..

    Сорри перед модераторами, если нарушаю права на рекламу сайтов и все такое...
    Вобщем, пользуюсь системой (если так ее можно называть) ucoz.ru. Там можно в домене второго уровня создать бесплатный сайт. В частности, имеется возможность организовать на этом сайте (опять же, если корректно так выражаться) - FTP сервер. Управление сайтом и FTP сервером ведется через через "панель управления" системы ucoz. Вот как-то так.
    В результате имею: через "панель управления" я как на сайт, так и на FTP-сервер зайти могу, а посредством своей программы (впрочем, и через Total Commander) - не могу.
    By the way, аналогичным образом только что создал еще один сайт с FTP-сервером (бесплатный, в другом домене 2-го уровня). Все снова заработало.

    Однако проблемы не снимает, т.к. я не разобрался в причине возниконовения описанной ситуации, равно как и в путях ее решния...
  • Сергей М. © (26.11.08 21:38) [22]

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


    Ты вообще русский или нерусский ?)
    Вопрос же был предельно ясен - изложи подробные свои действия по доступу через "панель управления".. Можешь начать с момента загрузки компьютера)..
  • Michael (27.11.08 00:20) [23]

    > Ты вообще русский или нерусский ?)

    Понимаю, что форум, понимаю, что проблема - лично у меня, но такой наезд кажется чрезмерным и необоснованным. Не хочу переходить на личности... Прецендентов как здесь, так и на схожих форумах достаточно. Продолжать?

    > Вопрос же был предельно ясен - изложи подробные свои действия
    > по доступу через "панель управления".. Можешь начать с момента
    > загрузки компьютера)..

    Нажимается кнопка "Power" на системном блоке. Загружается операционная система Windows XP SP3. Подключается интернет. Загружется страница "www.ucoz.ru". Вводится  логин и пароль. Переходится на панель управления сайтом. Переходится в панели управления на страницу "Файловый менеджер". Эта страница позволяет осуществлять управлением FTP-сервером сайта, т.е.: создавать директории, удалять директории, закачивать файлы, удалять файлы и т.д.
    После захода ввода пароля и логина и захода в "Файловый менеджер" доступны все действия, которые необходимо производить из моего проекта.
    Как то: закачивать файлы, скачивать файлы, удалять файлы.
    Достаточно подробно? Если необходимо, могу каждое действие дискретезировать.
  • Сергей М. © (27.11.08 08:20) [24]

    > Достаточно подробно?


    Вот теперь достаточно.


    > Загружется страница "www.ucoz.ru"


    Дальше можно было не продолжать.
    Ты подключился при этом к HTTP-серверу.
    FTP-протоколом при этом даже не пахнет.
  • Anatoly Podgoretsky © (27.11.08 15:12) [25]
    > Michael  (26.11.2008 14:19:19)  [19]

    > Что ж Вы так сразу?

    А как прикажешь понимать иначе, когда администрация тебе русским языком сказалп - нельзя, а тот кто пытается взломать систему хакером и является.
  • Сергей М. © (27.11.08 15:22) [26]

    > Anatoly Podgoretsky ©   (27.11.08 15:12) [25]


    Толя. он же. судя по постам выше. каким-то образом умудрялся же успешно коннектиться к штатному FTP-сервису через штатный же  FTP-порт ..

    То ли лапшу он (автор) вешал, то ли хостера фтопку ..

    А мож его и провайдеры банят на каком-то этапе маршрута ftp-трафика до юкозового сервера)..
  • Michael (28.11.08 10:08) [27]

    > он же. судя по постам выше. каким-то образом умудрялся
    > же успешно коннектиться к штатному FTP-сервису через штатный
    > же  FTP-порт ..

    Вобщем-то вполне себе стандартными методами коннектился. В течении более 2-х месяцев.
    > А мож его и провайдеры банят на каком-то этапе маршрута
    > ftp-трафика до юкозового сервера)..

    А существует ли возможность определить, на каком участке связи происходит отказ в обслуживании? Имею ввиду, можно ли определить, кто запретил соединение - хостер или провайдер?
    Соединение осуществляется через GPRS, если это как-то влияет...
  • Сергей М. © (28.11.08 10:38) [28]

    > Michael   (28.11.08 10:08) [27]


    > вполне себе стандартными методами коннектился. В течении
    > более 2-х месяцев


    Вот я читаю юкозовый ФАК и вижу там следующее:

    [23] Есть ли у вас возможность закачивать файлы через FTP?
    Да, такая возможность есть. Детали FTP подключения вы найдете в разделе "FTP" (главная страница панели управления). Помните, для того чтобы начал работать FTP необходимо подтвердить почтовый адрес и установить пароль для FTP (при первом входе в панель управления).


    Приведи сюда дословную цитату  из этих самых "деталей" ..


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


    3 минуты назад ftp-сервер Юкоза мне успешно ответил:

    > telnet ucoz.ru 21

    220---------- Welcome to Pure-FTPd ----------
    220-You are user number 2 of 100 allowed.
    220-Local time is now 10:36. Server port: 21.
    220-This is a private system - No anonymous login
    220 You will be disconnected after 15 minutes of inactivity.
  • Сергей М. © (28.11.08 10:40) [29]
    Обрати внимание на


    > You are user number 2 of 100 allowed


    Если ты будешь >= 101-ым юзером, то получишь отлуп как раз в виде 10061
  • Michael (28.11.08 13:53) [30]

    > Приведи сюда дословную цитату  из этих самых "деталей" .
    > .

    Скопипастил содержимое раздела "FTP детали":

    FTP нужен для быстрой и удобной загрузки большого количества файлов на сервер. Для подключения по FTP используйте специальные программы (например: CuteFTP, FTP Commander, FTP Navigator и т.д.). Использовать для этих целей браузер нельзя! Если вам нужно загрузить несколько файлов, то для этого лучше использовать "Файловый менеджер".

    Думаю, содержательно...)))

    > Если ты будешь >= 101-ым юзером, то получишь отлуп как раз
    > в виде 10061

    Спасибо большое! О возможности такой ситуации как-то не думал. Видимо, дело было именно в этом, т.к. сейчас снова все работает!

    Огромное спасибо всем ответившим!
    Думаю, обсуждение можно закрывать.
  • Сергей М. © (28.11.08 15:03) [31]

    > Для подключения по FTP используйте специальные программы


    > Использовать для этих целей браузер нельзя!


    Угу.
    Видимо, Коран запрещает)
  • Prizrak (24.01.09 08:07) [32]
    У меня тоже в локалке стоит фтп сервер с красивой веб оболочкой на основе DowloadEngine. Я тоже на делфях писал к нему клиент такие же проблемы встретил. копал инфу на делфи не помогло потом зашел в настройки фтп, а там их куча огромная. вот и стоит там если чел коннектица более 3 раз в минуту то бан его на определенное время. А када пишешь софт то конешна риконекты постояные обеспечены тестируешь ведь. и там очень много таких опций по защите. или допустим подключился своим софтом потом произошол обрыв а на серве соединение остается. ты перезапускаешь свою прогу и опять конект а та сесия еще не завершена(она завершится автоматом через установленное на серве время) и ты делаешь уже вторую. и так у тебя накапливается куча незакрытых сессий на серве. что тоже у него вызывает подозрение на тебя.
    Сори за безобразную формулировку, у мну уважительная причина - похмелиее.
  • имя (06.07.09 06:48) [33]
    Удалено модератором
 
Конференция "Сети" » IdFTP - плавающие ошибки Socket Error # 10061 и 10054 [D7, WinXP]
Есть новые Нет новых   [134435   +33][b:0.027][p:0.002]