| Hi-Tech Обзоры
2014-09-14 14:20:43
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 35)
Строки 62-70. Метод to_session(). Данный метод выполняет противоположное действие. Выполняется проверка, не является ли параметр объектом IO::Session; подробнее >>
2014-09-11 12:41:04
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 34)
Чтобы заставить объект IO::SessionSet использовать другую оболочку, можно создать подкласс класса IO:: SessionSet и перекрыть (переопределить) метод подробнее >>
2014-09-11 12:36:13
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 33)
Если метод new () был вызван с объектом приемного сокета IO::Socket, то этот сокет сохраняется в четвертой переменной состояния и вызывается подробнее >>
2014-09-11 12:30:53
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 32)
$set->delete($handle)
Удаляет дескриптор файла или объект IO::SessionData из контролируемого набора.
$sessions = $set->wait([$timeout])
Выполняет метод select () на наборе контролируемых дескрипторов файлов и возвращает соответствующие объекты сеансов, готовые для чтения. Если дескрипторы содержат входящие запросы в приемном сокете, они обслуживаются автоматически, как и запросы на запись, поставленные в очередь. Если задан параметр $timeout, то метод wait () возвращает пустой список при условии, что тайм-аут, заданный этим параметром, истекает до появления дескрипторов, готовых для чтения.
$sessions = $set->sessions()
Возвращает все объекты IO::SessionData, которые были зарегистрированы в этом наборе.
Проведем анализ программы IO::SessionData.
Строки 1-7. Инициализация модуля. Выполнение кода модуля начинается с загрузки всех необходимых модулей и определения глобальной переменной $debug, которая может быть установлена для получения подробных отладочных сообщений. Это средство оказалось буквально бесценным, когда разрабатывался данный модуль, а вам может быть интересно его активизировать, чтобы узнать, как же в действительности работает данный модуль. Для активизации отладочных сообщений просто поместите в начале своей программы оператор $IO::SessionSet::DEBUG=1.
Строки 8-27. Конструктор new() . Метод new() представляет собой конструктор для этого класса. Определяются три переменные состояния, которые являются ключами в хеше, включенном в пространство имен модуля с помощью функции bless () . Первый ключ, sessions, хранит набор сеансов. Два других, readers и writers, содержат объекты IO::Select, которые применяются, соответственно, при выборке дескрипторов, для чтения и записи. подробнее >>
2014-09-11 12:16:53
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 31)
Метод bail_out ( ) получает копию кода ошибки, которая возникла во время операции записи, завершившейся неудачей. В текущей реализации данного метода подробнее >>
2014-09-08 17:25:02
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 30)
Строки 117-130. Метод choke (). Следующим методом является choke (), который вызывается, если объем данных в выходном буфере превышает лимит данных подробнее >>
2014-09-05 19:45:20
Perl для IP-Телефонии (24 – Net::Telnet, часть 11)
Продолжим рассмотрение методов модуля Net::Telnet.
$value = $telnet->input_record_separator ([$newvalue])
$value = $telnet->output_record_separator ([$newvalue])
Эти два метода позволяют получить и/или установить разделители входных и выходных записей. Разделитель входных записей позволяет разбить введенные данные на строки и применяется в методах getline(), getlines() и cmd(). Разделитель выходных записей выводится в конце каждой строки выводимой с помощью метода print(). Оба разделителя по умолчанию имеют значение n.
$value = $telnet->prompt([$newvalue])
$value = $telnet->timeout([$newvalue])
$value = $telnet->binmode([$newvalue])
$value = $telnet->errmode([$newvalue])
Эти методы позволяют получить и/или установить соответствующие значения параметров и могут использоваться для определения или изменения значений этих параметров применяемых по умолчанию, после создания объекта Telnet.
$telnet->close
Метод close() разрывает соединение с удаленным хостом.
Программа дистанционной смены пароля.
Для иллюстрации практического применения модуля Net::Telnet рассмотрим сценарий дистанционной смены пароля . Этот сценарий поочередно обращается на каждый хост, указанный в командной строке, и меняет пароль регистрации пользователя. Такой сценарий может использоваться пользователем, зарегистрированным на нескольких компьютерах, на которых не обеспечен доступ к базе данных с информацией аутентификации. Ниже приведен пример применения этого сценария.
--old=mothergOOse --new=bopEEp
chiron masdorf sceptre
В этой командной строке показан запрос к сценарию для смены текущего пароля пользователя на трех компьютерах: chiron, masdorf и sceptre. Сценарий сообщает об удачной или неудачной попытке смены пароля на каждом из указанных компьютеров. подробнее >>
2014-09-05 15:13:23
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 29)
Если данных нет, то дескриптор файла немедленно закрывается и выдается предупреждающее сообщение объекту IO::SessionSet, управляющему этим подробнее >>
2014-09-05 15:06:43
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 28)
Если вызов метода произошел, когда буфер outbuffer пуст и нет данных, предназначенных для постановки в очередь, просто возвращается значение 0E0. подробнее >>
2014-09-02 01:11:18
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 27)
Строки 61-79. Метод write (), запись данных. В следующем разделе метода write () предпринимается попытка выполнить ввод-вывод. Если в буфере outbuffer подробнее >>
2014-09-02 01:05:39
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 26)
Код метода write_limit() может показаться не совсем понятным, но такова общая схема Perl для получения или установки переменной состояния в объекте подробнее >>
2014-08-27 13:14:01
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 25)
Метод new() принимает три параметра: объект IO::SessionSet, который им управляет, объект IO::Handle (обычно IO::Socket) и необязательный флажок, подробнее >>
2014-08-25 17:15:31
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 24)
В этих модулях применяется много объектно-ориентированных приемов и других общих схем языка Perl, где будет трудно разобраться в программном коде. подробнее >>
2014-08-25 17:06:18
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 23)
Модуль IO::SessionData
Теперь, после знакомства с возможностями этих двух модулей, рассмотрим, как они работают, начиная с модуля с подробнее >>
2014-08-25 16:59:17
Perl для IP-Телефонии (36 – Неблокирующий ввод-вывод, часть 22)
Ситуация, в которой операция чтения “была бы заблокирована”, рассматривается как возврат методу истинного значения, который подробнее >>
| |
|
|