В программах, основанных на использовании потоковых протоколов, которые должны обеспечивать прием входящих соединений, необходимо также указывать параметры Listen и, возможно, Reuse. Параметр Listen указывает размер очереди приемного сокета. Если этот параметр задан, то модуль IO::Socket после создания нового сокета будет вызывать функцию listen() с указанием этого параметра в качестве значения длины очереди. Этот параметр является обязательным, если в дальнейшем должна быть вызвана функция accept ().
Если параметр Reuse имеет истинное значение, это служит для конструктора модуля IO::Socket::INET указанием, что для нового сокета должна быть установлена опция SO_REUSEADDR. Эта опция полезна для серверов, работающих по протоколу с установлением логического соединения, для которых время от времени приходится выполнять перезапуск. Без этой опции серверу приходится ожидать несколько минут между завершением работы и повторным запуском, чтобы предотвратить возникновение ошибок типа “address in use” (адрес занят) во время вызова функции bind().
Параметры Proto и Туре обозначают протокол и тип сокета. Протокол может иметь символическое обозначение (например, “tcp”) или числовое обозначение, в котором используется значение, возвращенное функцией getprotobyname(). Параметр Туре должен быть установлен равным одной из констант S0CK_*, такой как SOCK_STREAM. Если в вызове конструктора модуля IO::Socket::INET не указана одна или обе эти опции, то соответствующие значения этих параметров определяются из контекста.