Spec-Zone.ru › OpenJDK 21

Интерфейс MulticastChannel

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

Многоадресная рассылка 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. Если сокет привязан к конкретному адресу, а не к подстановочному символу, то то, будут ли многоадресные датаграммы получены сокетом, зависит от реализации.

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

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

    // 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
Внешние спецификации
  • RFC 2236: Протокол управления группами Интернета, версия 2
  • RFC 2710: Открытие многоадресных слушателей (MLD) для IPv6
  • RFC 3376: Протокол управления группами Интернета, версия 3
  • RFC 3810: Открытие многоадресных слушателей версии 2 (MLDv2) для IPv6

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

Модификатор и тип Метод Описание
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 не имеет того же типа адреса, что и параметр group
IllegalStateException - Если канал в настоящее время является членом группы на заданном интерфейсе для приема всех дейтаграмм
UnsupportedOperationException - Если сокет канала не является сокетом протокола Интернета или фильтрация источников не поддерживается, или платформа не поддерживает мультигрупповую рассылку
ClosedChannelException - Если этот канал закрыт
IOException - Если произошла ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и его метод checkMulticast запрещает доступ к группе мультигрупповой рассылки

© 1993, 2023, 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/21/docs/api/java.base/java/nio/channels/MulticastChannel.html

Spec-Zone.ru

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