В серверных программах TCP, которые должны принимать входящие соединения, переходимо предусмотреть вызов метода new() с параметром Proto, равным “tcp”; параметром LocalPort, обозначающим порт, к которому должна быть выполнена привязка; и параметром Listen, указывающим желаемую длину очереди приемного сокета.
В приложениях UDP достаточно только указать параметр Proto равный udp, или параметр Туре, равный SOCK_DGRAM. Общая форма вызова года является одинаковой и для клиентов и для серверов.
Методы объекта IO::Socket. После создания сокета, его можно использовать в качестве устройства ввода-вывода и операторах ввода-вывода, включая print(), read(), <>, sysread() и т.д. Могут также применяться вызовы объектно-ориентированных методов модуля IO::File. Кроме того, объекты модуля Socket:: INET дополнительно приобретают методы, присущие сокетам. Рассмотрим эти методы.
Метод accept () выполняет ту же задачу, что и функция с аналогичным именем в функционально-ориентированном API-интерфейсе. Данный метод, действительный только при вызове из объекта приемного сокета, выбирает следующее входящее соединение из очереди и возвращает подключенный сокет сеанса, который может применяться для связи с удаленным хостом. Новый сокет наследует все атрибуты своего родительского объекта, но, в отличие от него, является подключенным.
Метод accept () при вызове в скалярном контексте возвращает подключенный сокет. При вызове в контексте списка он возвращает список с двумя элементами, первым из которых является подключенный сокет, а вторым - упакованный адрес удаленного хоста. Этот адрес можно также получить и в дальнейшем, вызвав метод peername() подключенного сокета.