-
Доброго времени суток, форумчане! Излагаю суть проблемы: имею проект, обращающийся к 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 отключен, сторонний не используется. Прошу помочь советом: можно ли избавится от этих ошибок и что можно сделать в моем случае для установления соединения в случае появления вышеуказанных ошибок? Спасибо, что прочли вопрос. Если необходимо, выложу недостающие участки кода.
-
> что можно сделать в моем случае для установления соединения > в случае появления вышеуказанных ошибок?
ничего, эти ошибки не является ошибками программиста
-
ну разве что, ты не обращаешься на несуществующий сервер... или указал неверный порт...
-
Еще возник параллельный вопрос: как можно идентифицировать описанные ошибки? Пока ничего кроме сравнения e.Message со строками сообщений об ошибках, в голову не приходит. А, скажем, код ошибки можно получить? Что потом, например, можно было свои сообщения пользователю отображать в зависимости от типа возникшего исключения.
-
on e: Exception do ShowMessage(e.ClassName + ' ' + e.Message)
-
> Сергей М. © (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.
-
будь проще, прочитай справку про try/except on e:EIdConnectException do begin с какого перепугу классы исключений библиотеки Indy будут в SysUtils ?
-
> с какого перепугу классы исключений библиотеки Indy будут > в SysUtils ?
Спасибо! Я забыл подключить IdException...
A по теме ветки - ничего, кроме смены FTP-сервера, получается, в этой ситуации сделать нельзя?
-
> ничего, кроме смены FTP-сервера, получается, в этой ситуации > сделать нельзя?
А их у тебя разве косой десяток ?
Я так понимаю, что тебе требуется достучаться до какого-то конкретного, который "капризничает", а не до любого..
-
> А их у тебя разве косой десяток ?Я так понимаю, что тебе > требуется достучаться до какого-то конкретного, который > "капризничает", а не до любого..
Совершенно верно. Поэтому сейчас я и не знаю, что делать. Единственное достижение - это то, что ошибка 10061 перестала быть "плавающей". Сегодня - 100% попыток присоединиться к FTP-серверу завершились именно так. Что можно сделать в этой ситуации? Как проверить - "жив" еще сервер или нет? Как узнать - не сменили ли на днях у него порт доступа (21, как и убольшинства фтп-шников)?
-
> Как узнать - не сменили ли на днях у него порт доступа > (21, как и убольшинства фтп-шников)?
позвонить администратору сервера
-
> Как узнать - не сменили ли на днях у него порт доступа
Кроме сканирования активных портов с попыткой обращения к каждому найденному по ftp - никак.
> 100% попыток присоединиться к FTP-серверу завершились именно > так
Именно как ? С ошибкой 100061 ?
-
> позвонить администратору сервера
Юзаю бесплатный FTP-сервер, звонить, собственно, некому (
> Именно как ? С ошибкой 100061 ?
Нет. Текст по e.Message приходит следующий: Socket Error # 10061 Connection refused.
-
> Юзаю бесплатный FTP-сервер, звонить, собственно, некому > (
в каком смысле бесплатный? находящийся на каком'то хосте в интернете? что'ж тут удивлятся ошибкам...
-
> Connection refused
Верь глазам своим - попытка соединения отвергнута сервером.
А вот ошибка с кодом 100054 возникает уже после успешного коннекта, и она означает партнер по соединению закрыл соединение по своей инициативе, в момент когда ты осуществляешь попытку инф.обмена с ним.
-
> в каком смысле бесплатный? находящийся на каком'то хосте > в интернете? что'ж тут удивлятся ошибкам...
Именно так. К этому и относилась мысль, что видимо, придется перейти на какой-нибудь платный сервер. Хоть позвонить в случае чего будет кому... > Верь глазам своим - попытка соединения отвергнута сервером. > А вот ошибка с кодом 100054 возникает уже после успешного > коннекта, и она означает партнер по соединению закрыл соединение > по своей инициативе, в момент когда ты осуществляешь попытку > инф.обмена с ним.
Спасибо, я на MSDN'е расшифровку ошибок нашел. Не нашел только - что с этим теперь делать. Т. е. как достучаться до сервера, если он отклоняет соединения? В смысле, возможно ли это теоретически?
-
> Т. е. как достучаться до сервера, если он отклоняет соединения?
это типа "как же войти в дверь? а там какой то мужик меня не пускает" :)
-
> Michael (26.11.08 11:48) [15]
А сам хост-то, на котором работает ftp-сервер, доступен ? Ты его пинговал-трассировал ? И что говорит стандартный виндовый telnet-клиент по поводу попытки
open имя_или_адрес_хоста_с_FTP_сервером 21
?
-
> Michael (26.11.2008 11:24:12) [12]
Так ты хакер? Хакерам вход на сервер не разрешен.
-
> А сам хост-то, на котором работает ftp-сервер, доступен > ?
Да, доступен. Более того, я могу зайти на FTP-сервер через панель управления сайтом. Настройки никакие не менял, а "извне" достучаться стало невозможно.
> Так ты хакер? Хакерам вход на сервер не разрешен.
Что ж Вы так сразу? Я тут в поисках ответа книгу "Indy in depth" прочел...)))
-
> могу зайти на FTP-сервер через панель управления сайтом
Это как ? Рассказывай подробно ..
-
> Это как ?Рассказывай подробно ..
Сорри перед модераторами, если нарушаю права на рекламу сайтов и все такое... Вобщем, пользуюсь системой (если так ее можно называть) ucoz.ru. Там можно в домене второго уровня создать бесплатный сайт. В частности, имеется возможность организовать на этом сайте (опять же, если корректно так выражаться) - FTP сервер. Управление сайтом и FTP сервером ведется через через "панель управления" системы ucoz. Вот как-то так. В результате имею: через "панель управления" я как на сайт, так и на FTP-сервер зайти могу, а посредством своей программы (впрочем, и через Total Commander) - не могу. By the way, аналогичным образом только что создал еще один сайт с FTP-сервером (бесплатный, в другом домене 2-го уровня). Все снова заработало.
Однако проблемы не снимает, т.к. я не разобрался в причине возниконовения описанной ситуации, равно как и в путях ее решния...
-
> через "панель управления" я как на сайт, так и на FTP-сервер > зайти могу
Ты вообще русский или нерусский ?) Вопрос же был предельно ясен - изложи подробные свои действия по доступу через "панель управления".. Можешь начать с момента загрузки компьютера)..
-
> Ты вообще русский или нерусский ?)
Понимаю, что форум, понимаю, что проблема - лично у меня, но такой наезд кажется чрезмерным и необоснованным. Не хочу переходить на личности... Прецендентов как здесь, так и на схожих форумах достаточно. Продолжать?
> Вопрос же был предельно ясен - изложи подробные свои действия > по доступу через "панель управления".. Можешь начать с момента > загрузки компьютера)..
Нажимается кнопка "Power" на системном блоке. Загружается операционная система Windows XP SP3. Подключается интернет. Загружется страница "www.ucoz.ru". Вводится логин и пароль. Переходится на панель управления сайтом. Переходится в панели управления на страницу "Файловый менеджер". Эта страница позволяет осуществлять управлением FTP-сервером сайта, т.е.: создавать директории, удалять директории, закачивать файлы, удалять файлы и т.д. После захода ввода пароля и логина и захода в "Файловый менеджер" доступны все действия, которые необходимо производить из моего проекта. Как то: закачивать файлы, скачивать файлы, удалять файлы. Достаточно подробно? Если необходимо, могу каждое действие дискретезировать.
-
> Достаточно подробно?
Вот теперь достаточно.
> Загружется страница "www.ucoz.ru"
Дальше можно было не продолжать. Ты подключился при этом к HTTP-серверу. FTP-протоколом при этом даже не пахнет.
-
> Michael (26.11.2008 14:19:19) [19]
> Что ж Вы так сразу?
А как прикажешь понимать иначе, когда администрация тебе русским языком сказалп - нельзя, а тот кто пытается взломать систему хакером и является.
-
> Anatoly Podgoretsky © (27.11.08 15:12) [25]
Толя. он же. судя по постам выше. каким-то образом умудрялся же успешно коннектиться к штатному FTP-сервису через штатный же FTP-порт ..
То ли лапшу он (автор) вешал, то ли хостера фтопку ..
А мож его и провайдеры банят на каком-то этапе маршрута ftp-трафика до юкозового сервера)..
-
> он же. судя по постам выше. каким-то образом умудрялся > же успешно коннектиться к штатному FTP-сервису через штатный > же FTP-порт ..
Вобщем-то вполне себе стандартными методами коннектился. В течении более 2-х месяцев. > А мож его и провайдеры банят на каком-то этапе маршрута > ftp-трафика до юкозового сервера)..
А существует ли возможность определить, на каком участке связи происходит отказ в обслуживании? Имею ввиду, можно ли определить, кто запретил соединение - хостер или провайдер? Соединение осуществляется через GPRS, если это как-то влияет...
-
> 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.
-
Обрати внимание на
> You are user number 2 of 100 allowed
Если ты будешь >= 101-ым юзером, то получишь отлуп как раз в виде 10061
-
> Приведи сюда дословную цитату из этих самых "деталей" . > .
Скопипастил содержимое раздела "FTP детали":
FTP нужен для быстрой и удобной загрузки большого количества файлов на сервер. Для подключения по FTP используйте специальные программы (например: CuteFTP, FTP Commander, FTP Navigator и т.д.). Использовать для этих целей браузер нельзя! Если вам нужно загрузить несколько файлов, то для этого лучше использовать "Файловый менеджер".
Думаю, содержательно...)))
> Если ты будешь >= 101-ым юзером, то получишь отлуп как раз > в виде 10061
Спасибо большое! О возможности такой ситуации как-то не думал. Видимо, дело было именно в этом, т.к. сейчас снова все работает!
Огромное спасибо всем ответившим! Думаю, обсуждение можно закрывать.
-
> Для подключения по FTP используйте специальные программы
> Использовать для этих целей браузер нельзя!
Угу. Видимо, Коран запрещает)
-
У меня тоже в локалке стоит фтп сервер с красивой веб оболочкой на основе DowloadEngine. Я тоже на делфях писал к нему клиент такие же проблемы встретил. копал инфу на делфи не помогло потом зашел в настройки фтп, а там их куча огромная. вот и стоит там если чел коннектица более 3 раз в минуту то бан его на определенное время. А када пишешь софт то конешна риконекты постояные обеспечены тестируешь ведь. и там очень много таких опций по защите. или допустим подключился своим софтом потом произошол обрыв а на серве соединение остается. ты перезапускаешь свою прогу и опять конект а та сесия еще не завершена(она завершится автоматом через установленное на серве время) и ты делаешь уже вторую. и так у тебя накапливается куча незакрытых сессий на серве. что тоже у него вызывает подозрение на тебя. Сори за безобразную формулировку, у мну уважительная причина - похмелиее.
-
Удалено модератором
|