Если переменная $bytes имеет положительное значение, то получены данные, требуют обработки. Выполняется обработка данных и передача их методу one_line () объекта Eliza, который принимает строку, введенную пользователем, и возвращает ответ. Для отправки этого ответа клиенту вызывается метод syswrite () . Если переменная $bytes равна 0 или имеет значение undef, этот результат рассматривается как признак конца файла и поэтому происходит переход к следующему разделу кода для закрытия сеанса.
Написание дипломной работы это ответственный шаг любого студента, который завершает свое обучение. Помощником в этом деле может стать сайт http://sesija.ru/ позволяющий облегчить набор выпускной работы по ряду специальностей. Квалифицированные специалисты грамотно подберут необходимый материал и дадут необходимые консультации.
9) Выполнение действий для завершения сеанса. Последняя часть этого цикла отвечает за закрытие сеансов.
Сеанс должен быть закрыт, если возникла одна из следующих двух ситуаций. Во-первых, код результата 0, полученный от функции sysread(), указывает, что клиент закрыл свой конец соединения. Во-вторых, пользователь ввел одну из нескольких заключительных фраз, распознаваемых сервером Eliza, таких как "bye", “quit” или “goodbye”. В этом случае метод done () сервера Eliza возвращает истинное значение.
Выполняется проверка наличия обеих ситуаций. В любом случае происходит удаление сокета из списка дескрипторов, контролируемых объектом IO:: Select, его закрытие и удаление из хеша %sessions.
Обратите внимание, что полученный от функции sysread() код возврата fcflrief, который указывает на ошибку ввода-вывода любого типа, рассматривается так же, как конец файла. Зачастую этого вполне достаточно, но в сервере, который обрабатывает важные данные, может потребоваться проводить различия между сознательным закрытием соединения клиентом и ошибкой. В этом случае можно проверить переменную $bytes с помощью функции defined () для распознавания этих ситуаций.