Строки 34-37. Создание сокета UDP и оболочки сервера. Имя сервера и номер порта берутся из командной строки. Если эти значения не заданы, некоторые из них принимаются по умолчанию. Эти данные передаются методу ChatObjects::Comm->new(). При изучении модуля становится очевидно, что метод new () этого модуля представляет собой тонкую оболочку, которая принимает все переданные ей параметры, добавляет параметр Proto => ’udp' и передает полученные параметры методу IO::Socket::INET->new (). Подобные операции возможны при любом обращение к серверу источнику, например, к сайту где продается балка двутавровая .
Следует отметить, что методу IO::Socket::lNET->new () передается параметр PeerAddr, в результате чего модуль IO::Socket предпринимает попытку подключиться с помощью функции connect () к указанному хосту сервера. Этот адрес будет применяться в качестве адреса назначения при каждом вызове метода send (), поэтому любой адрес назначения, указанный в списке параметров, будет игнорироваться. Как было описано ранее, еще одним следствием подключения сокета UDP является отказ от приема сообщений, отправленных в сокет из других хостов. Поскольку клиент предназначен для обмена сообщениями только с одним сервером, и то, и другое способствует улучшению его работы.
Строки 38-40. Регистрация. Вызывается внутренняя подпрограмма do_login (), которая выдает пользователю приглашение к регистрации и отправляет соответствующее регистрационное сообщение на сервер. В случае успешного выполнения подпрограмма возвращает псевдоним, выбранный пользователем.