Другие языки программирования и технологии
проблема с FTP клиентом который я написала на C++ .
вообщем ситуация такая .. мой клиент подключается к серверу narod.ru ..авторизовывается и ищит на хосте специальный файл который в дальнейшим необходимо скачать .. а проблема собственно в следующим .. мой клиент ежесекундно проверяет наличие этого файла на хосте ...и из за этого спустя определённое время мой хост блокируют .. посчитав наверное как атаку .. я делала интервал и в полторы секунды и через Рендом .. всё это бесполезно .. может я что то не понимаю ...объясните мне .. и ещё я вкурсе что авторизация на сервере действует всего 60 секунд .. :) ..
Если нужно быстро среагировать на событие, то никакие проверки через интервалы времени делать не следует. Это наоборот увеличивает время ожидания.
Но FTP ведь не может оповестить клиента об изменении в файлах.. . То есть он не совсем для этого подходит и нужно менять или задачу или способ решения.
Здесь правильнее было бы применять TCP протокол. Или в худшем случае HTTP.
TCP позволяет иметь неограниченной длины сессию, и приём/передачу одновременно с обоих концов.
HTTP другое дело, это тот же TCP но уже на уровне запроса. Если клиенту нужно передать на сервер то он шлёт запрос, а если серверу нужно быстро отдать что-то клиенту.. . то на сервере для этого должен находиться постоянно висящий запрос от клиента. На который сервер и ответит. Или не ответит, и клиент опять его подаст.
Касаемо того что авторизация действует всего 60 секунд - правильно сделано в FileZilla. Если сервер внезапно разорвал подключение то клиент снова производит вход на сервер. Делает действие. И так далее. Встречает ответ "не авторизован" и снова производит авторизацию. То есть приложение надо делить на 2 части - логику работы с FTP, и внутреннюю логику передачи/получения ответа с FTP. И там прозрачно делать повторную авторизацию.
Но FTP ведь не может оповестить клиента об изменении в файлах.. . То есть он не совсем для этого подходит и нужно менять или задачу или способ решения.
Здесь правильнее было бы применять TCP протокол. Или в худшем случае HTTP.
TCP позволяет иметь неограниченной длины сессию, и приём/передачу одновременно с обоих концов.
HTTP другое дело, это тот же TCP но уже на уровне запроса. Если клиенту нужно передать на сервер то он шлёт запрос, а если серверу нужно быстро отдать что-то клиенту.. . то на сервере для этого должен находиться постоянно висящий запрос от клиента. На который сервер и ответит. Или не ответит, и клиент опять его подаст.
Касаемо того что авторизация действует всего 60 секунд - правильно сделано в FileZilla. Если сервер внезапно разорвал подключение то клиент снова производит вход на сервер. Делает действие. И так далее. Встречает ответ "не авторизован" и снова производит авторизацию. То есть приложение надо делить на 2 части - логику работы с FTP, и внутреннюю логику передачи/получения ответа с FTP. И там прозрачно делать повторную авторизацию.
Дело не в частоте повторений, а в их количестве (хотя это связано) . Скорее всего, блокируют если за некоторый промежуток (скажем, минуту) было сделано, условно, 20 запросов. Попробуй увеличить интервал до полуминуты. Или нужно очень-очень оперативно реагировать? Тогда нужно использовать не narod, а свой сервак.
А ещё файл может находиться в состоянии закачки, поэтому лучше сделать два обновления и сравнить размер. Если он не изменился, только тогда качать.
А ещё файл может находиться в состоянии закачки, поэтому лучше сделать два обновления и сравнить размер. Если он не изменился, только тогда качать.
Это почему "авторизация на сервере действует всего 60 секунд" ? Не замечал такого
А зачем так часто проверять? Не лучше ли будет подрубиться, проверить наличие файла, отрубиться, подождать, скажем, минуту, повторить?
ого.. вот это девушка... .
давай познакомимся?
давай познакомимся?
Есть возможность провести тест на сторонней машине? Скажем. . у друга разместить сервак? если проблема будет повторяться, то само собой "движок" (я думаю вам это понятно) . А от себя скажу. . что отошел я от народа.. . :)
Может скрипт программы неверный, так-что проверьте правильность написанного скрипта
Похожие вопросы
- Почему клиент с другого компьютера не подключается к серверу через интернет? Клиент и сервер написаны на C#.
- А почему программы написанные на C/C#/C++ имеют больший вес чем на tasm/masm?
- на чем, написан c++ ? и, не пишите, что язык программирования написанн сам на себе, python к примеру написан на C .
- написать программу C++
- Как динамически расширять программы для платформы win32 написанные на C++?
- Прочитал в книге, что есть вещи которые можно сделать на C++ и нельзя на C#. Что они из себя представляют?
- если движок для видеоигры написан на c++ это значит в winapi?нет? тогда в чем?
- Кончились идеи. Что написать на C# ?
- Что сказать клиенту, который хочет дизайн почти такой, как здесь www.dynasports.com
- Помогите пожалуйста подобрать тест на которых моя программа заваливается... C++