4) Главный цикл select (). Теперь программа входит в главный цикл. При каждом проходе по циклу вызывается метод can_read() объекта IO::Select. Этот метод блокируется на неопределенное время, пока приемный сокет не будет готов к выполнению функции accept () или подключенный сокет (ни один из них еще не был добавлен к набору дескрипторов) не будет готов для чтения.
5) Просмотр в цикле готовых дескрипторов. После выполнения функции can_read () возвращает список дескрипторов файлов, готовых для чтения. Теперь необходимо просмотреть этот список в цикле и определить, что делать с каждым из них.
6) Обработка приемного сокета. Если дескриптор относится к приемному сокету, то вызывается его метод accept (), что приводит к созданию нового подключенного сокета. Создается новый объект Chatbot::Eliza::Polite для обработки соединений, а сокет и объект chatbot добавляются к хешу session. Поскольку в качестве ключа применяется уникальное имя объекта сокета, это позволяет извлекать из хеша соответствующий объект chatbot каждый раз, когда возникает необходимость выполнить ввод или вывод в конкретном сокете.
После создания объекта Chatbot вызывается метод welcome (). Этот метод возвращает приветственное сообщение, которое отправляется с помощью функции syswrite () прямо подключенному клиенту. После этого подключенный сокет добавляется к набору дескрипторов объекта IO::Select путем вызова метода IO: :Select->add(). Теперь подключенный сокет будет проверяться на наличие входящих данных при следующем проходе по циклу.
2014-07-18 13:06:58
это интересно Современные методы работы зачастую требуют наших познаний в сфере программирования и опыт работы с базами данных. Одним из доступных программных средств является VBA Access, а на сайте info-comp.ru можно подробно изучить массивы и циклы в VBA и другие основы данного языка. Здесь также познакомиться с экспортом и импортом текстовых данных базы данных.