IP__DROP__MEMBERSHIP. Эта опция позволяет выйти из группы многоадресной рассылки и прекратить членство в ней. Для установки этой опции применяются значения, аналогичные используемым в опции IP_ADD_MEMBERSHIP. В качестве рассылки может быть проведена информатизация пользователей локальной сети о новостях в мире Cisco технологий, а коммутаторах которой можно прочесть на сайте .
Напомним, что опции IP_MULTICAST_IF, IP_ADD_MEMBERSHIP и IP_DROP_MEMBERSHIP относятся к уровню IP, поэтому в вызове функции setsockopt () должен быть указан уровень опции, соответствующий номеру протокола IP, возвращенному функцией getprotobyname ().
Последние опции могут показаться более сложными в использовании, чем есть ил самом деле. Единственная сложность состоит в подготовке параметра ip_mreq для передачи функции setsockopt (). Для этого необходимо передать адрес группы функции inet_aton (), а затем объединить полученный результат с константой INADDR__ANY. В приведенном ниже фрагменте кода показано, как присоединиться к группе многоадресной рассылки, на этот раз с адресом 225.1.1.3.
my $mcast_addr = inet_aton('225.1.1.3');
ту $local_addr = INADDR__ANY;
ту $ip__mreq — $mcast__addr . $local__addr;
my $ip__level = getprotobyname ('IP')
or die "Can't get protocol: $! " ;
setsockopt ($sock, $ip__level, IP__ADD__MEMBERSHIP, $ip_mreq) or die "Can't join group: $!";
Для выхода из группы выполняется аналогичное действие, но с использованием константы IP_DROP_MEMBERSHIP. Перед выходом из программы можно не отменять регистрацию во всех группах. Об этом позаботится операционная система при уничтожении сокета.
В данном случае не существует способа запросить у операционной системы информацию о том, к какой группе многоадресной рассылки принадлежит данный сокет. За этим приходится следить самостоятельно.
Модуль IO::Socket::Multicast
В настоящем разделе разработан небольшой Модуль, который значительно упрощает получение и установку опций многоадресной рассылки. Как и модуль IO::Interface, описанный ранее, данный модуль разработан только на языке Perl и позволяет получить системные константы из файлов .ph, сгенерированных с помощью инструментального средства h2ph. Версию модуля IO::Multicast на языке С можно получить из архива CPAN, и если в вашей системе установлен транслятор С или C++, автор рекомендует установить этот модуль, чтобы не пришлось заниматься сложными действиями со сценарием h2ph.