Для установки значения этой опции применяется упакованный IP-адрес интерфейса, созданный с помощью функции inefc_aton (). Если интерфейс явно не установлен, операционная система сама выбирает подходящее значение.
В операционной системе Linux при использовании функции getsockopt () для выборки значения опции IP_MULTIСASТ_IF нужно знать небольшой “секрет”. Эта операционная система в качестве параметра функции setsockopt () принимает упакованный 4-байтовый адрес интерфейса, но возвращает 12-байтовую структуру ip_mreqn, полученную в результате вызова функции getsockopt () (описание соответствующей ей структуры ip_mreq приведено ниже). Это недокументированное правило представляет собой программную ошибку, которая должна быть исправлена в ядре версии 2.4 или последующих версиях. Эта особенность функции учтена в модуле IO::Multicast, который описан в следующем разделе.
В отличие от тех опций сокета, которые мы до сих пор рассматривали, опции многоадресной рассылки, к примеру, с информацией про ремонт htc one m7 применяются не к уровню сокета стека протоколом, SOL_SOCKET, а к уровню IP-протокола (который отвечает за маршрутизацию пакетов и выполнение других функций, касающихся IP-адресов). Функциям getsockopt() и setsockopt () должен быть также передан номер протокола для уровня IP, который может быть выбран путем вызова функции getprotobyname () с использованием IP * в качестве имени протокола. В следующем примере показано, как отключить опцию возврата пакетов на локальный хост для сокета $sock.
mу $ip_level = getprotobyname(IP) or die "Can't get protocol: $!";
Поскольку метод IO::Socket->sockopt() предназначен для работы на уровне SOL_SOCKET, он не может применяться для опций многоадресной рассылки. Однако могут использоваться методы setsockopt () и getsockopt () модуля IO::Socket, которые представляют собой тонкие оболочки для вызовов основополагающих функций Perl.
Константы опций многоадресной рассылки определены в системном файле заголовка netinet/in.h. Чтобы получить доступ к соответствующим значениям операционной системы, необходимо преобразовать системные файлы заголовков с помощью инструментального средства h2ph.