Spec-Zone.ru › OpenJDK 21

Класс MulticastSocket

java.lang.Object
java.net.DatagramSocket
java.net.MulticastSocket
Все реализованные интерфейсы:
Closeable, AutoCloseable
public class MulticastSocket extends DatagramSocket
A MulticastSocket — это сокет для датаграмм, удобный для отправки и получения IP-мультивещательных датаграмм. Конструкторы MulticastSocket создают сокет с соответствующими параметрами сокета, делающими его пригодным для приема мультивещательных датаграмм. Класс MulticastSocket дополнительно определяет удобные методы для установки и получения параметров сокета, которые обычно используются приложениями мультивещания.

Присоединение к одному или нескольким группам мультивещания позволяет принимать мультивещательные датаграммы, отправленные в эти группы.

Группа IPv4 мультивещания определяется IP-адресом класса D и стандартным номером порта UDP. IP-адреса класса D находятся в диапазоне 224.0.0.0 по 239.255.255.255, включительно. Адрес 224.0.0.0 зарезервирован и не должен использоваться.

Для присоединения к группе мультивещания необходимо сначала создать MulticastSocket с требуемым портом, а затем вызвать метод joinGroup, указав адрес группы и сетевой интерфейс, через который будут приниматься мультивещательные датаграммы:


 // join a Multicast group and send the group salutations
 ...
 String msg = "Hello";
 InetAddress mcastaddr = InetAddress.getByName("228.5.6.7");
 InetSocketAddress group = new InetSocketAddress(mcastaddr, 6789);
 NetworkInterface netIf = NetworkInterface.getByName("bge0");
 MulticastSocket s = new MulticastSocket(6789);

 s.joinGroup(new InetSocketAddress(mcastaddr, 0), netIf);
 byte[] msgBytes = msg.getBytes(StandardCharsets.UTF_8);
 DatagramPacket hi = new DatagramPacket(msgBytes, msgBytes.length, group);
 s.send(hi);
 // get their responses!
 byte[] buf = new byte[1000];
 DatagramPacket recv = new DatagramPacket(buf, buf.length);
 s.receive(recv);
 ...
 // OK, I'm done talking - leave the group...
 s.leaveGroup(group, netIf);
 
Когда сообщение отправляется в группу мультивещания, все подписчики на этот хост и порт получают сообщение (в пределах времени жизни пакета, см. ниже). Сокет не обязательно должен быть членом группы мультивещания, чтобы отправлять сообщения в неё.

Когда сокет подписывается на группу/порт мультивещания, он получает датаграммы, отправленные другими хостами в группу/порт, как и все другие члены группы и порта. Сокет прекращает членство в группе с помощью метода leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf). Несколько MulticastSockets могут одновременно подписываться на группу и порт мультивещания, и они все получат датаграммы группы.

Классы DatagramSocket и MulticastSocket определяют удобные методы для установки и получения нескольких параметров сокета. Как и DatagramSocket, этот класс также поддерживает методы setOption и getOption для установки и запроса параметров сокета. Набор поддерживаемых параметров сокета определён в DatagramSocket. Также могут быть доступны дополнительные (специфичные для реализации) параметры.

Примечание API:
DatagramSocket может использоваться напрямую для отправки и получения мультивещательных датаграмм. DatagramChannel реализует интерфейс MulticastChannel и предоставляет альтернативный API для отправки и получения мультивещательных датаграмм. API MulticastChannel поддерживает как любой-источник, так и конкретный-источник мультивещания. Рассмотрите использование DatagramChannel для мультивещания.
С:
1.1

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

Конструктор Описание
MulticastSocket()
Создаёт сокет мультивещания и связывает его с любым доступным портом на локальном хосте.
MulticastSocket(int port)
Создаёт сокет мультивещания и связывает его с указанным портом на локальном хосте.
MulticastSocket(SocketAddress bindaddr)
Создаёт сокет мультивещания, связанный с указанным локальным адресом сокета.

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

Модификатор и тип Метод Описание
InetAddress getInterface()
Устарело.
Сетевой интерфейс может не быть однозначно определён возвращаемым InetAddress.
boolean getLoopbackMode()
Устарело.
Используйте DatagramSocket.getOption(SocketOption) с StandardSocketOptions.IP_MULTICAST_LOOP вместо этого.
NetworkInterface getNetworkInterface()
Получение сетевого интерфейса мультивещания, установленного для исходящих мультивещательных датаграмм, отправленных из этого сокета.
int getTimeToLive()
Получение значения по умолчанию для времени жизни мультивещательных пакетов, отправленных по сокету.
byte getTTL()
Устарело.
Используйте метод getTimeToLive() вместо этого, который возвращает int вместо byte.
void joinGroup(InetAddress mcastaddr)
Устарело.
Этот метод не принимает сетевой интерфейс, в котором присоединиться к группе мультивещания.
void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf)
Присоединение к группе мультивещания.
void leaveGroup(InetAddress mcastaddr)
Устарело.
Этот метод не принимает сетевой интерфейс, в котором покинуть группу мультивещания.
void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf)
Выход из группы мультивещания на указанном локальном интерфейсе.
void send(DatagramPacket p, byte ttl)
Устарело.
Используйте следующий код или его эквивалент вместо этого:
void setInterface(InetAddress inf)
Устарело.
InetAddress может не однозначно идентифицировать сетевой интерфейс.
void setLoopbackMode(boolean disable)
Устарело.
Используйте DatagramSocket.setOption(SocketOption, Object) с StandardSocketOptions.IP_MULTICAST_LOOP вместо этого.
void setNetworkInterface(NetworkInterface netIf)
Указание сетевого интерфейса для исходящих мультивещательных датаграмм, отправленных по этому сокету.
void setTimeToLive(int ttl)
Установка значения по умолчанию для времени жизни мультивещательных пакетов, отправленных по этому MulticastSocket для управления охватом мультивещания.
void setTTL(byte ttl)
Устарело.
Используйте метод setTimeToLive(int) вместо этого, который использует int вместо byte в качестве типа для ttl.

Методы, объявленные в классе java.net.DatagramSocket

bind, close, connect, connect, disconnect, getBroadcast, getChannel, getInetAddress, getLocalAddress, getLocalPort, getLocalSocketAddress, getOption, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoTimeout, getTrafficClass, isBound, isClosed, isConnected, receive, send, setBroadcast, setDatagramSocketImplFactory, setOption, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSoTimeout, setTrafficClass, supportedOptions

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

MulticastSocket

public MulticastSocket() throws IOException
Создаёт сокет для работы с мультикаст-соединением и связывает его с любым доступным портом на локальном хосте. Сокет будет привязан к адресу wildcard.

Если существует менеджер безопасности, его метод checkListen вызывается первым с аргументом 0, чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException.

При создании сокета вызывается метод DatagramSocket.setReuseAddress(boolean) для включения опции SO_REUSEADDR сокета.

Исключения:
IOException - если при создании MulticastSocket произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
См. также:
  • SecurityManager.checkListen(int)
  • DatagramSocket.setReuseAddress(boolean)
  • DatagramSocketImpl.setOption(SocketOption, Object)

MulticastSocket

public MulticastSocket(int port) throws IOException
Создаёт сокет для работы с мультикаст-соединением и привязывает его к указанному порту на локальном хосте. Сокет будет привязан к адресу wildcard.

Если существует менеджер безопасности, его метод checkListen вызывается первым с аргументом port , чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException.

При создании сокета вызывается метод DatagramSocket.setReuseAddress(boolean) для включения опции SO_REUSEADDR сокета.

Параметры:
port - используемый порт
Исключения:
IOException - если при создании MulticastSocket произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
IllegalArgumentException - если порт находится вне допустимого диапазона диапазона портов.
См. также:
  • SecurityManager.checkListen(int)
  • DatagramSocket.setReuseAddress(boolean)

MulticastSocket

public MulticastSocket(SocketAddress bindaddr) throws IOException
Создаёт мультикаст-сокет, привязанный к указанному локальному адресу сокета.

Если адрес null будет создан не привязанный сокет.

Если существует менеджер безопасности, его метод checkListen вызывается первым с портом SocketAddress в качестве аргумента, чтобы убедиться в разрешении операции. Это может привести к исключению SecurityException.

При создании сокета вызывается метод DatagramSocket.setReuseAddress(boolean) для включения опции SO_REUSEADDR сокета.

Параметры:
bindaddr - Адрес сокета для привязки, или null для непривязанного сокета.
Исключения:
IOException - если при создании MulticastSocket произошла ошибка ввода-вывода
SecurityException - если менеджер безопасности существует и его метод checkListen не разрешает операцию.
С тех пор:
1.4
См. также:
  • SecurityManager.checkListen(int)
  • DatagramSocket.setReuseAddress(boolean)

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

setTTL

@Deprecated public void setTTL(byte ttl) throws IOException
Устарело.
Используйте метод setTimeToLive(int) вместо него, который использует int вместо byte в качестве типа для ttl.
Устанавливает значение времени жизни для мультикаст-пакетов, отправляемых по этому MulticastSocket для управления охватом мультикаста.

ttl — беззнаковое 8-битное значение, поэтому оно должно находиться в диапазоне 0 <= ttl <= 0xFF .

Параметры:
ttl - время жизни
Исключения:
IOException - если при установке значения по умолчанию времени жизни произошла ошибка ввода-вывода
См. также:
  • getTTL()

setTimeToLive

public void setTimeToLive(int ttl) throws IOException
Устанавливает значение времени жизни для мультикаст-пакетов, отправляемых по этому MulticastSocket для управления охватом мультикаста.

Значение ttl должно находиться в диапазоне 0 <= ttl <= 255, иначе будет выброшено исключение IllegalArgumentException. Мультикаст-пакеты, отправленные с TTL 0, не передаются по сети, но могут быть доставлены локально.

Примечание API:
Этот метод эквивалентен вызову setOption(StandardSocketOptions.IP_MULTICAST_TTL, ttl).
Параметры:
ttl - время жизни
Исключения:
IOException - если при установке значения по умолчанию времени жизни произошла ошибка ввода-вывода
С тех пор:
1.2
См. также:
  • getTimeToLive()
  • StandardSocketOptions.IP_MULTICAST_TTL

getTTL

@Deprecated public byte getTTL() throws IOException
Устарело.
Используйте метод getTimeToLive() вместо него, который возвращает int вместо byte.
Получение значения времени жизни по умолчанию для мультикаст-пакетов, отправляемых по сокету.
Возвращает:
значение времени жизни по умолчанию
Исключения:
IOException - если при получении значения по умолчанию времени жизни произошла ошибка ввода-вывода
См. также:
  • setTTL(byte)

getTimeToLive

public int getTimeToLive() throws IOException
Получение значения времени жизни по умолчанию для мультикаст-пакетов, отправляемых по сокету.
Примечание API:
Этот метод эквивалентен вызову getOption(StandardSocketOptions.IP_MULTICAST_TTL).
Возвращает:
значение времени жизни по умолчанию
Исключения:
IOException - если при получении значения по умолчанию времени жизни произошла ошибка ввода-вывода
С тех пор:
1.2
См. также:
  • setTimeToLive(int)
  • StandardSocketOptions.IP_MULTICAST_TTL

joinGroup

@Deprecated(since="14") public void joinGroup(InetAddress mcastaddr) throws IOException
Устарело.
Этот метод не принимает сетевой интерфейс, на котором присоединиться к мультикаст-группе. Используйте joinGroup(SocketAddress, NetworkInterface) вместо него.
Присоединяется к мультикаст-группе. Его поведение может быть повлияно setInterface или setNetworkInterface.

Если существует менеджер безопасности, этот метод сначала вызывает его метод checkMulticast с аргументом mcastaddr.

Примечание API:
Вызов этого метода эквивалентен вызову joinGroup(new InetSocketAddress(mcastaddr, 0), null).
Параметры:
mcastaddr - мультикаст-адрес для присоединения
Исключения:
IOException - если произошла ошибка присоединения, или адрес не является мультикаст-адресом, или платформа не поддерживает мультикаст
SecurityException - если менеджер безопасности существует и его метод checkMulticast не разрешает присоединение.
См. также:
  • SecurityManager.checkMulticast(InetAddress)

leaveGroup

@Deprecated(since="14") public void leaveGroup(InetAddress mcastaddr) throws IOException
Устарело.
Этот метод не принимает сетевой интерфейс, на котором покинуть мультикаст-группу. Используйте leaveGroup(SocketAddress, NetworkInterface) вместо него.
Покидает мультикаст-группу. Его поведение может быть повлияно setInterface или setNetworkInterface.

Если существует менеджер безопасности, этот метод сначала вызывает его метод checkMulticast с аргументом mcastaddr.

Примечание API:
Вызов этого метода эквивалентен вызову leaveGroup(new InetSocketAddress(mcastaddr, 0), null).
Параметры:
mcastaddr - мультикаст-адрес для выхода
Исключения:
IOException - если произошла ошибка выхода или адрес не является мультикаст-адресом.
SecurityException - если менеджер безопасности существует и его метод checkMulticast не разрешает операцию.
См. также:
  • SecurityManager.checkMulticast(InetAddress)

joinGroup

public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
Присоединяется к группе мультиадресной рассылки.

Для присоединения к группе мультиадресной рассылки вызывающий метод должен указать IP-адрес группы мультиадресной рассылки для присоединения и локальный сетевой интерфейс для приема пакетов мультиадресной рассылки.

  • Аргумент mcastaddr указывает IP-адрес группы мультиадресной рассылки для присоединения. По историческим причинам он задается как SocketAddress. Реализация по умолчанию поддерживает только InetSocketAddress, и информация port игнорируется.
  • Аргумент netIf указывает локальный интерфейс для приема пакетов мультиадресной рассылки или null, чтобы указать интерфейс, установленный для исходящих пакетов мультиадресной рассылки. Если null, и не установлен ни один интерфейс, поведение не определено: может быть выбран любой интерфейс или операция может завершиться ошибкой SocketException.

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

Если существует менеджер безопасности, этот метод сначала вызывает метод checkMulticast с аргументом mcastaddr в качестве аргумента.

Overrides:
joinGroup в классе DatagramSocket
Параметры:
mcastaddr - указывает адрес мультиадресной рассылки для присоединения.
netIf - указывает локальный интерфейс для приема пакетов мультиадресной рассылки или null.
Исключение:
IOException - если произошла ошибка при присоединении, или когда адрес не является адресом мультиадресной рассылки, или платформа не поддерживает мультиадресную рассылку
SecurityException - если менеджер безопасности существует и его метод checkMulticast не разрешает присоединение.
IllegalArgumentException - если mcastaddr null или является подклассом SocketAddress, не поддерживаемым этим сокетом
С:
1.4
См. также:
  • SecurityManager.checkMulticast(InetAddress)
  • MulticastChannel.join(InetAddress, NetworkInterface)
  • StandardSocketOptions.IP_MULTICAST_IF
  • setNetworkInterface(NetworkInterface)
  • setInterface(InetAddress)

leaveGroup

public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
Выход из группы мультиадресной рассылки на указанном локальном интерфейсе.

Если существует менеджер безопасности, этот метод сначала вызывает его метод checkMulticast с аргументом mcastaddr в качестве аргумента.

Overrides:
leaveGroup в классе DatagramSocket
Примечание API:
Аргументы mcastaddr и netIf должны идентифицировать группу мультиадресной рассылки, которая ранее была присоединена к этому сокету.

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

Параметры:
mcastaddr - это адрес мультиадресной рассылки, из которого необходимо выйти. Он должен содержать тот же IP-адрес, что и используемый для присоединения к группе.
netIf - указывает локальный интерфейс или null для использования интерфейса, установленного для исходящих пакетов мультиадресной рассылки. Если null, и не установлен ни один интерфейс, поведение не определено: может быть выбран любой интерфейс или операция может завершиться ошибкой SocketException.
Исключение:
IOException - если произошла ошибка при выходе, или когда адрес не является адресом мультиадресной рассылки.
SecurityException - если менеджер безопасности существует и его метод checkMulticast не разрешает операцию.
IllegalArgumentException - если mcastaddr null или является подклассом SocketAddress, не поддерживаемым этим сокетом.
С:
1.4
См. также:
  • SecurityManager.checkMulticast(InetAddress)
  • joinGroup(SocketAddress, NetworkInterface)

setInterface

@Deprecated(since="14") public void setInterface(InetAddress inf) throws SocketException
Устарело.
InetAddress может не однозначно идентифицировать сетевой интерфейс. Используйте setNetworkInterface(NetworkInterface) вместо этого.
Устанавливает сетевой интерфейс мультиадресной рассылки, используемый методами, поведение которых зависит от значения сетевого интерфейса. Полезно для хостов с несколькими интерфейсами.
Параметры:
inf - InetAddress
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка TCP.
См. также:
  • getInterface()

getInterface

@Deprecated(since="14") public InetAddress getInterface() throws SocketException
Устарело.
Сетевой интерфейс может не быть однозначно идентифицирован возвращаемым InetAddress. Используйте getNetworkInterface() вместо этого.
Получение адреса сетевого интерфейса, используемого для пакетов мультиадресной рассылки.
Возвращает:
InetAddress, представляющий адрес сетевого интерфейса, используемого для пакетов мультиадресной рассылки, или если не установлен ни один интерфейс, InetAddress, представляющий любой локальный адрес.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка TCP.
См. также:
  • setInterface(java.net.InetAddress)

setNetworkInterface

public void setNetworkInterface(NetworkInterface netIf) throws SocketException
Указывает сетевой интерфейс для исходящих пакетов мультиадресной рассылки, отправляемых по этому сокету.
Примечание API:
Этот метод эквивалентен вызову setOption(StandardSocketOptions.IP_MULTICAST_IF, netIf).
Параметры:
netIf - интерфейс
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка TCP.
С:
1.4
См. также:
  • getNetworkInterface()
  • StandardSocketOptions.IP_MULTICAST_IF

getNetworkInterface

public NetworkInterface getNetworkInterface() throws SocketException
Получение сетевого интерфейса мультиадресной рассылки, установленного для исходящих пакетов мультиадресной рассылки, отправляемых из этого сокета.
Примечание API:
Когда интерфейс установлен, этот метод эквивалентен вызову getOption(StandardSocketOptions.IP_MULTICAST_IF).
Возвращает:
Установленный в настоящее время интерфейс мультиадресной рассылки. Когда интерфейс не установлен, возвращается плейсхолдер NetworkInterface; в нем содержится единственный InetAddress для представления любого локального адреса.
Исключение:
SocketException - если произошла ошибка в базовом протоколе, например, ошибка TCP.
С:
1.4
См. также:
  • setNetworkInterface(NetworkInterface)
  • StandardSocketOptions.IP_MULTICAST_IF

setLoopbackMode

@Deprecated(since="14") public void setLoopbackMode(boolean disable) throws SocketException
Устарело.
Используйте DatagramSocket.setOption(SocketOption, Object) с StandardSocketOptions.IP_MULTICAST_LOOP вместо этого. Режим петли по умолчанию включен, MulticastSocket.setOption(StandardSocketOptions.IP_MULTICAST_LOOP, false) выключает его.
Отключение/включение локального циклического повтора пакетов мультиадресной рассылки. Этот параметр используется кодом сетевого стека платформы в качестве подсказки, чтобы определить, будут ли данные мультиадресной рассылки возвращаться к локальному сокету.

Поскольку этот параметр является подсказкой, приложения, которые хотят проверить установленный режим петли, должны вызвать getLoopbackMode()

Параметры:
disable - true для отключения режима LoopbackMode
Исключение:
SocketException - если произошла ошибка при установке значения
С:
1.4
См. также:
  • getLoopbackMode()

getLoopbackMode

@Deprecated(since="14") public boolean getLoopbackMode() throws SocketException
Устарело.
Используйте DatagramSocket.getOption(SocketOption) с StandardSocketOptions.IP_MULTICAST_LOOP вместо этого.
Получение настройки локального циклического повтора пакетов мультиадресной рассылки.
Возвращает:
true, если режим LoopbackMode отключен
Исключение:
SocketException - если произошла ошибка при получении значения
С:
1.4
См. также:
  • setLoopbackMode(boolean)

Отправить

@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException
Устарело.
Используйте следующий код или его эквивалент:
  ......
  int ttl = mcastSocket.getOption(StandardSocketOptions.IP_MULTICAST_TTL);
  mcastSocket.setOption(StandardSocketOptions.IP_MULTICAST_TTL, newttl);
  mcastSocket.send(p);
  mcastSocket.setOption(StandardSocketOptions.IP_MULTICAST_TTL, ttl);
  ......
Отправляет пакет данных в пункт назначения с TTL (время жизни) отличным от значения по умолчанию для сокета. Этот метод следует использовать только в тех случаях, когда требуется конкретное значение TTL; в противном случае предпочтительнее установить TTL один раз в сокете и использовать это значение по умолчанию для всех пакетов. Данный метод не изменяет значение TTL по умолчанию для сокета. Его поведение может быть изменено setInterface.

Если существует менеджер безопасности, этот метод сначала выполняет некоторые проверки безопасности. Во-первых, если p.getAddress().isMulticastAddress() истинно, этот метод вызывает метод менеджера безопасности checkMulticast с p.getAddress() и ttl в качестве аргументов. Если результат вычисления этого выражения ложно, этот метод вместо этого вызывает метод менеджера безопасности checkConnect с аргументами p.getAddress().getHostAddress() и p.getPort(). Каждый вызов метода менеджера безопасности может привести к SecurityException, если операция недопустима.

Параметры:
p - отправляемый пакет. Пакет должен содержать адрес назначения мультиадресной IP и данные, которые нужно отправить. Для отправки пакетов на адрес назначения мультиадресной рассылки не нужно быть членом группы.
ttl - необязательное время жизни мультиадресного пакета. Значение TTL по умолчанию равно 1.
Исключение:
IOException - генерируется, если возникает ошибка, например, при настройке TTL.
SecurityException - если существует менеджер безопасности и его метод checkMulticast или checkConnect не допускает отправки.
PortUnreachableException - может быть сгенерировано, если сокет подключён к в настоящее время недоступному пункту назначения. Отметим, нет гарантии, что исключение будет сгенерировано.
IllegalArgumentException - если сокет подключён, и адреса подключения и пакета отличаются, или если сокет не подключён, и адрес пакета не задан, или если порт находится вне допустимого диапазона.
См. также:
  • DatagramSocket.send(java.net.DatagramPacket)
  • DatagramSocket.receive(java.net.DatagramPacket)
  • SecurityManager.checkMulticast(java.net.InetAddress, byte)
  • SecurityManager.checkConnect(java.lang.String, int)

© 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/net/MulticastSocket.html

Spec-Zone.ru

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