Строки 59-67. Обработка сообщения set_mcast_port. Подпрограмма create_msockt() отвечает за обработку сообщений set_mcast_port, отправленных с сервера. Она должна создавать новый объект ChatObjects::MComm, привязанный к указанному порту, и добавлять сокет этого объекта связи к списку дескрипторов файлов, контролируемых в главном цикле select клиентской программы.
В этой функции вначале выполняется проверка номера порта, отправленного сервером в теле сообщения, и происходит отказ от обработки сообщения, если оно не содержит числовых данных. Если глобальная переменная $msocket уже определена, то функция удаляет ее из списка дескрипторов, контролируемых глобальным объектом IO::Select (в настоящее время этого не происходит, но в будущих версиях сервера может быть предусмотрено динамическое изменение номера порта многоадресной рассылки).
Следующий этап состоит в создании нового объекта связи ChatObjects::MComm для обработки входящих многоадресных сообщений, которые к примеру, будут содержать информацию о новых технологиях в мобильной и IT областях, их обсуждение тут . Вызывается метод ChatObjects::MComm->new() для создания нового объекта связи, который служит оболочкой для сокета многоадресной рассылки UDP.
Последний этап заключается в добавлении вновь созданного сокета к списку, контролируемому глобальным объектом IO::Select.
Строки 124-136. Подключение к каналу и отключение от него. Для обработки сообщений с кодами событий join_ack и part_ack, полученных с сервера, вызывается подпрограмма join_part (). Она интерпретирует полученное с сервера сообщение, которое содержит адрес группы многоадресной рассылки соответствующего канала. В случае сообщения join дек выполняется присоединение сокета многоадресной рассылки к группе путем вызова его метода mcast_add (). В ином случае вызывается метод mcast__drop().
Строки 137-142. Получение информации о канале. Последнее, простейшее изменение внесено в метод ischannel(), который предоставляет информацию о канале в ответ на сообщение channel_item.