Spec-Zone.ru › OpenJDK 17

Интерфейс MulticastChannel

Все суперинтерфейсы:
AutoCloseable, Channel, Closeable, NetworkChannel
Все известные реализующие классы:
DatagramChannel
public interface MulticastChannel extends NetworkChannel
Сеть канал, поддерживающий многоадресную рассылку по протоколу IP (Internet Protocol).

Многоадресная рассылка IP — это передача пакетов IP членам группы, состоящей из нуля или более хостов, идентифицированных по одному целевому адресу.

В случае канала на сокет IPv4, базовая операционная система необязательно поддерживает RFC 2236: Протокол управления группами в Интернете, версия 2 (IGMPv2). Если IGMPv2 поддерживается, то операционная система может дополнительно поддерживать фильтрацию источников, как указано в RFC 3376: Протокол управления группами в Интернете, версия 3 (IGMPv3). Для каналов на сокет IPv6 соответствующими стандартами являются RFC 2710: Многоадресное обнаружение слушателей (MLD) для IPv6 и RFC 3810: Многоадресное обнаружение слушателей версия 2 (MLDv2) для IPv6.

Метод join(InetAddress,NetworkInterface) используется для присоединения к группе и получения всех многоадресных пакетов, отправленных в группу. Канал может присоединяться к нескольким многоадресным группам и может присоединяться к одной и той же группе по нескольким interfaces. Принадлежность отменяется вызовом метода drop на возвращенном объекте MembershipKey. Если базовая платформа поддерживает фильтрацию источников, то можно использовать методы block и unblock для блокировки или разблокировки многоадресных пакетов от определенных адресов источников.

Метод join(InetAddress,NetworkInterface,InetAddress) используется для начала приема пакетов, отправленных в группу, адрес источника которой соответствует заданному адресу источника. Этот метод выбрасывает UnsupportedOperationException, если базовая платформа не поддерживает фильтрацию источников. Принадлежность кумулятивна, и этот метод можно вызывать повторно с той же группой и интерфейсом для получения пакетов от других адресов источников. Метод возвращает объект MembershipKey, представляющий принадлежность к получению пакетов от заданного адреса источника. Вызов метода drop ключа отменяет принадлежность, чтобы пакеты от адреса источника больше не принимались.

Зависимости от платформы

Реализация многоадресной рассылки предназначена для прямого отображения на собственные средства многоадресной рассылки. Следовательно, при разработке приложения, которое получает многоадресные пакеты IP, следует учитывать следующие моменты:
  1. При создании канала необходимо указать ProtocolFamily, который соответствует типу адреса многоадресных групп, к которым будет присоединяться канал. Нет гарантии, что канал на сокет одной семейства протоколов может присоединяться и получать многоадресные пакеты, когда адрес многоадресной группы соответствует другой семействе протоколов. Например, если канал на сокет IPv6 может присоединиться к многоадресной группе IPv4 и получить многоадресные пакеты, отправленные в группу, зависит от реализации.

  2. Сокет канала должен быть привязан к адресу wildcard. Если сокет привязан к определенному адресу, а не к адреса wildcard, то получение многоадресных пакетов сокетом зависит от реализации.

  3. Параметр SO_REUSEADDR должен быть включен до binding сокета. Это необходимо, чтобы разрешить нескольким членам группы привязку к одному и тому же адресу.

Пример использования:

     // join multicast group on this interface, and also use this
     // interface for outgoing multicast datagrams
     NetworkInterface ni = NetworkInterface.getByName("hme0");

     DatagramChannel dc = DatagramChannel.open(StandardProtocolFamily.INET)
         .setOption(StandardSocketOptions.SO_REUSEADDR, true)
         .bind(new InetSocketAddress(5000))
         .setOption(StandardSocketOptions.IP_MULTICAST_IF, ni);

     InetAddress group = InetAddress.getByName("225.4.5.6");

     MembershipKey key = dc.join(group, ni);
 
С:
1.7

Краткое описание методов

Модификатор и тип Метод Описание
void close()
Закрывает этот канал.
MembershipKey join(InetAddress group, NetworkInterface interf)
Подключается к многоадресной группе для начала приема всех пакетов, отправленных в группу, возвращая ключ членства.
MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source)
Подключается к многоадресной группе для начала приема пакетов, отправленных в группу, с указанным адресом источника.

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

Методы, объявленные в интерфейсе java.nio.channels.NetworkChannel

bind, getLocalAddress, getOption, setOption, supportedOptions

Подробное описание методов

close

void close() throws IOException
Закрывает этот канал.

Если канал является членом мультивещательной группы, то членство dropped. По возвращении, membership-key будет invalid.

В противном случае этот метод ведет себя точно так же, как указано в интерфейсе Channel.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Channel
Определено в:
close в интерфейсе Closeable
Исключение:
IOException - Если произошла ошибка ввода-вывода

join

MembershipKey join(InetAddress group, NetworkInterface interf) throws IOException
Подключается к мультивещательной группе для начала приема всех дейтаграмм, отправленных в группу, возвращая ключ членства.

Если этот канал в настоящее время является членом группы на заданном интерфейсе для приема всех дейтаграмм, то возвращается ключ членства, представляющий это членство. В противном случае этот канал присоединяется к группе, и возвращается полученный новый ключ членства. Полученный ключ членства не source-specific.

Мультивещательный канал может присоединяться к нескольким мультивещательным группам, включая одну и ту же группу на нескольких интерфейсах. Реализация может установить ограничение на количество групп, к которым можно присоединиться одновременно.

Параметры:
group - Мультивещательный адрес для подключения
interf - Сетевой интерфейс, на котором необходимо присоединиться к группе
Возвращает:
Ключ членства
Исключение:
IllegalArgumentException - Если параметр группы не является multicast адресом, или параметр группы имеет тип адреса, который не поддерживается этим каналом
IllegalStateException - Если канал уже имеет членство с указанием источника в группе на данном интерфейсе
UnsupportedOperationException - Если сокет канала не является сокетом протокола Интернета или платформа не поддерживает мультивещание
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и его метод checkMulticast запрещает доступ к мультивещательной группе

join

MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source) throws IOException
Присоединяется к мультивещательной группе для начала приема дейтаграмм, отправленных в группу с указанного адреса источника.

Если этот канал в настоящее время является членом группы на заданном интерфейсе для приема дейтаграмм от заданного адреса источника, то возвращается ключ членства, представляющий это членство. В противном случае этот канал присоединяется к группе, и возвращается полученный новый ключ членства. Полученный ключ членства source-specific.

Членство кумулятивное, и этот метод может быть вызван повторно с той же группой и интерфейсом для приема дейтаграмм, отправленных другими адресами источника в группу.

Параметры:
group - Мультивещательный адрес для подключения
interf - Сетевой интерфейс, на котором необходимо присоединиться к группе
source - Адрес источника
Возвращает:
Ключ членства
Исключение:
IllegalArgumentException - Если параметр группы не является multicast адресом, параметр source не является одноадресным адресом, параметр группы имеет тип адреса, который не поддерживается этим каналом, или параметр source не является таким же типом адреса, как группа
IllegalStateException - Если канал в настоящее время является членом группы на заданном интерфейсе для приема всех дейтаграмм
UnsupportedOperationException - Если сокет канала не является сокетом протокола Интернета, или фильтрация источника не поддерживается, или платформа не поддерживает мультивещание
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и его метод checkMulticast запрещает доступ к мультивещательной группе

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/channels/MulticastChannel.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API