| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Системное программирование > Net::FTP и кол-во попыток соединения |
| Автор: Sugar84 20.9.2010, 18:53 | ||||||||||||||
| Добрый вечер. Есть примерно такой код (сократил чтобы упростить):
При доступе к одному из серверов файлы копируются с переменным успехом, в случае удачи программа выдает такое:
и идет дальше. В случае неудачи получаю такое вот:
И вот так скрипт долго висит (2-3 минуты), затем вылетает с ошибкой:
При этом в tcpdump видно что к серваку улетают syn-пакеты на нужный порт (5 штук), но ответа нету, в нетлисте подключение висит со статусом "synsnt". Если подправить цикл вот так:
Происходит то же самое, но вылетает уже с такой ошибкой:
Долго думал как это косяк c eval обойти, и придумал вот такое решение:
Но оно мне кажется громоздким, уродливым и ээ... неправильным Вопрос 1: можно ли как-то через интерфейс к Net::FTP задать кол-во попыток подключения , т.е. чтоб скрипт не тупо кидал synsent на один порт, а несколько раз пытался именно открыть новое tcp-соединение. Облазил документация и код модулей Net::FTP, Net::FTP::dataconn, IO::Socket, IO::Socket::INET но так ничего и не смог найти. Вопрос 2: Как задать таймаут соединения? Несмотря на задаваемый параметр Timeout (ставлю 10, 20 и .д.) скрипт все равно висит около 2-3 минут при посылании synsent. Спасибо за ответы. |
| Автор: Pfailed 2.10.2010, 07:07 |
| На cpan есть модуль http://search.cpan.org/perldoc?Net::FTP::AutoReconnect. Думаю стоит его посмотреть. |
| Автор: Sugar84 12.10.2010, 20:31 |
| Спасибо, задачу уже решил, но это отличный модуль. В следующий раз буду иметь в виду! =) |
| Автор: ucb1 24.4.2012, 14:58 |
| так в чем же решение и где найти примеры использования Net::FTP::Autoreconnect cpan перечисляет комманды без usage |
| Автор: Pfailed 25.4.2012, 09:40 |
Использовать точно также, как Net::FTP. |