Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка timeout при работе по telnet, Net::telnet  
:(
    Опции темы
dron000
Дата 13.11.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Коннекчусь по telnet к серверу, иногда получается ситуация когда срабатывает таймаут, на строке $line = $obj->getline();
Код

$obj = new Net::Telnet (Timeout =>10, 
                                       Host => "99.99.99.99",  
                                       Port       => "9999",
                                       Errmode => "die" );
$obj->print('command.....');
$line = $obj->getline();


как правильно обработать такую ситуацию смотрел тут http://www.opennet.ru/base/dev/perl_net_telnet.txt.html но не очень понял как работает  $boolean = $obj->timed_out; почму-то он всегда true и при успешном подключении. smile 

PM MAIL   Вверх
Bulat
Дата 13.11.2009, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(dron000 @  13.11.2009,  11:54 Найти цитируемый пост)
Коннекчусь по telnet к серверу, иногда получается ситуация когда срабатывает таймаут, на строке $line = $obj->getline();


не читал документацию по ссылке, но предполагаю, что таймаут срабатывает, если метод ничего не моэет вернуть в течении 10 секунд, явно объявленных в строке

Код

$obj = new Net::Telnet (Timeout =>10, ...


не совсем понятно чего вы хотите добиться, чтобы таймаута вообще не было?? Наверно это не реализовано, но при желании вместо 10 секунд, можно его увеличить  smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
dron000
Дата 13.11.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Про то что он есть и как его увеличить я догадываюсь....Мне нужно чтобы на страницу выводилось сообщение об ошибке.
PM MAIL   Вверх
dron000
Дата 15.11.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Есть какие-то варианты как обработать ситуацию когда сервак определенное время не отвечает и выдать сообщение об ошибке, не останавливая программу?
PM MAIL   Вверх
shamber
Дата 15.11.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 1
Всего: 18



dron000, eval?
PM MAIL Jabber   Вверх
dron000
Дата 15.11.2009, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Да не, немного не то нужно- просто померить время задержки ответа сервера при 

Код

$obj = new Net::Telnet (Timeout =>10, 
                                       Host => "99.99.99.99",  
                                       Port       => "9999",
                                       Errmode => "die" );



и вывести сообщение об ошибке, просто если Errmode => "die" то как я понимаю выполнение скрипта завершиться и все.
PM MAIL   Вверх
Bulat
Дата 16.11.2009, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



dron000, 

Код

errmode - определяет действие, предпринимаемое в случае ошибки


       $mode = $obj->errmode;
       $prev = $obj->errmode($mode);


   Метод получает или устанавливает действие, используемое когда
   происходит ошибка использования объекта. Первый вызов возвращает
   текущую моду. Второй - устанавливает значение $mode и возвращает
   предыдущую моду. Правильные значения для $mode - die (по умолчанию),
   return, coderef, или arrayref.

   Когда мода установлена die и происходит ошибка, на печатается ошибка и
   программа завершается

   Если мода установлена coderef, то когда происходит ошибка вызывается
   coderef c ошибкой, как первый аргумент. Используя эту моду вы можете
   создавать вашу собственную обработку ошибок. Если coderef возвращает
   сам себя, то метод сгенерировавший ошибку возвращает неопределенное
   значение или нулевой лист(массив) в зависимости от контекста.

   Если мода установлена arrayref, то первый элемент массива(array)
   должен быть coderef. Любой следующий элемент - аргумент к coderef.
   Когда достигнута ошибка, вызывается coderef его аргументами. Используя
   эту моду вы можете создавать вашу собственную обработку ошибок. Если
   coderef возвращает сам себя, то метод сгенерировавший ошибку
   возвращает неопределенное значение или нулевой лист(массив) в
   зависимости от контекста.


Товарищ!!! Не ленись курить маны.. это все по твоей же ссылке. smile Ну  а вот если будут конкретные проблемы с конкретной реализацией - милости просим  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
dron000
Дата 17.11.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.9.2006

Репутация: нет
Всего: нет



Мне вот как раз и не понятно было как выставляется обработчик, но уже разобрался.Спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.