Личный кабинет    
Назад К началу Вперед Карта сайта Телефонные коды стран и городов Мира Анализатор тарифов Служб IP-Телефонии и Рейтинг

Разделы
Введение
Литература
Операторы
Оборудование
Анализатор
Сотрудничество
Печать карт
Новости
Опросник
Коды
Справка
Работа
Каталог
Хостинг
Личный кабинет

Реклама

Perl для IP-Телефонии (32 – TCP клиент/сервер, часть 14)

предыдущая часть ««»» следующая часть

Строки 28, 29. Завершение работы родительского процесса. Если значение переменной $child отлично от нуля, то управление находится в родительском процессе. В этом случае достаточно просто закрыть принадлежащую ему копию подключенного сокета и вернуться в начало цикла для приема с помощью функции accept () еще одного соединения. Пока роди­тельский процесс ожидает нового соединения, дочерний процесс обрабатывает старое.

 Строки 30-38. Подпрограмма interact(). Эта подпрограмма вызывается дочерним про­цессом для выполнения всех операций взаимодействия между клиентом и сервером.

Метод command_interfасе ( ) модуля Chatbot::Eliza жестко запрограммирован на чтение из устройства stdin и запись в устройство stdout. Однако нам необходимо вместо этого вы­полнять чтение и запись в сокете.

Фактически эту проблему решить несложно. При загрузке модуль io::Socket вызывает также методы родительского класса IO:: Handle. В число этих методов входит fdopen (), который рассматривался ранее (модули IO::Handle и IO::File). Метод fdopen() закрывает суще­ствующий дескриптор файла, а затем вновь открывает его с использованием информации из дру­гого переданного ему дескриптора файла. Он работает с любым дескриптором файла, в том чис­ле с тремя стандартными. В этой программе метод fdopen () вызывается три раза, для stdin, stdout и stderr. При каждом вызове методу fdopen () передается объект сокета и символьное обозначение режима доступа. Устройство stdin переоткрывается для чтения в режиме <, а уст­ройства stdout и stderr — для записи в режиме >. А теперь, почти как в сказочном кино по мановению волшеб­ной палочки, при выводе в устройства stdout и stderr данные будут записываться в подклю­ченный сокет, а при вводе из устройства stdin будут считываться из сокета.

Остальная часть этой подпрограммы идентична психотерапевтической программе с интер­фейсом командной строки, приведенной в листинге ранее. Включен режим автоматического сброса, чтобы данные, выводимые из устройства stdout объектом chatbot::Eliza, немед­ленно поступали на удаленный конец соединения, создается новый объект chatbot::Eliza и вызывается его метод command_interface ().



2014-05-24 13:16:23

предыдущая часть ««»» следующая часть


ДОКУМЕНТАЦИЯ VoIP


НОВОСТИ СВЯЗИ


РЕКОМЕНДУЕМ

 
[ стандарты | обзор | оборудование | анализатор | коды | новости | карта | партнерам | Мы ВКонтаке ]
Запрещается копировать материалы сайта без уведомления авторов.
С вопросами и предложениями обращайтесь со страницы контактов
Copyright c 1999-2024 IPTop.Net
 
IP-Телефония, Интернет Телефония, Компьютерная телефония