Spec-Zone .ru
спецификации, руководства, описания, API
|
public class MulticastSocket extends DatagramSocket
Многоадресная группа определяется IP-адресом класса D и стандартным номером порта UDP. IP-адреса Класса D находятся в диапазоне 224.0.0.0
к 239.255.255.255
, включительно. Адрес 224.0.0.0 резервируется и не должен использоваться.
Можно было бы присоединиться к многоадресной группе первым созданием MulticastSocket с требуемым портом, затем вызывая joinGroup(InetAddress groupAddr)
метод:
// join a Multicast group and send the group salutations ... String msg = "Hello"; InetAddress group = InetAddress.getByName("228.5.6.7"); MulticastSocket s = new MulticastSocket(6789); s.joinGroup(group); DatagramPacket hi = new DatagramPacket(msg.getBytes(), msg.length(), group, 6789); 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);Когда каждый отправляет сообщение многоадресной группе, все получатели подписки к тому узлу и порту получают сообщение (в пределах диапазона времени-к-живому пакета, см. ниже). Сокет не должен быть элементом многоадресной группы, чтобы отправить сообщения этому.
Когда сокет подписывается на многоадресную группу/порт, он получает дейтаграммы, отправленные другими узлами группы/порта, также, как и все другие элементы группы и порта. Сокет оставляет членство в группе leaveGroup (InetAddress addr) метод. Многократный MulticastSocket может подписаться на многоадресную группу и порт одновременно, и они все получат групповые дейтаграммы.
В настоящий момент апплетам не позволяют использовать многоадресные сокеты.
Конструктор и Описание |
---|
MulticastSocket()
Создайте многоадресный сокет.
|
MulticastSocket(int port)
Создайте многоадресный сокет и свяжите его с определенным портом.
|
MulticastSocket(SocketAddress bindaddr)
Создайте MulticastSocket, связанный с указанным адресом сокета.
|
Модификатор и Тип | Метод и Описание |
---|---|
InetAddress |
getInterface()
Получите адрес сетевого интерфейса, используемого для многоадресных пакетов.
|
boolean |
getLoopbackMode()
Получите установку для локальной обратной петли многоадресных дейтаграмм.
|
NetworkInterface |
getNetworkInterface()
Установите многоадресный сетевой интерфейс.
|
int |
getTimeToLive()
Получите время-к-живому по умолчанию для многоадресных пакетов, отосланных на сокете.
|
byte |
getTTL()
Осуждаемый.
используйте getTimeToLive метод вместо этого, который возвращает интервал вместо байта.
|
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)
Осуждаемый.
Используйте следующий код или его эквивалент вместо этого:...... интервал ttl = mcastSocket.getTimeToLive (); mcastSocket.setTimeToLive (newttl); mcastSocket.send (p); mcastSocket.setTimeToLive (ttl);......
|
void |
setInterface(InetAddress inf)
Установите многоадресный сетевой интерфейс, используемый методами, на поведение которых влияло бы значение сетевого интерфейса.
|
void |
setLoopbackMode(boolean disable)
Отключите/Позвольте локальную обратную петлю многоадресных дейтаграмм, которые опция используется сетевым кодом платформы в качестве подсказки для того, чтобы установить, будут ли многоадресно переданные данные циклично выполнены назад к локальному сокету.
|
void |
setNetworkInterface(NetworkInterface netIf)
Определите сетевой интерфейс для исходящих многоадресных дейтаграмм, отправленных на этом сокете.
|
void |
setTimeToLive(int ttl)
Установите время-к-живому по умолчанию для многоадресных пакетов, отосланных на этом
MulticastSocket чтобы управлять контекстом многоадресных сообщений. |
void |
setTTL(byte ttl)
Осуждаемый.
используйте setTimeToLive метод вместо этого, который использует интервал вместо байта как тип для ttl.
|
bind, close, connect, connect, disconnect, getBroadcast, getChannel, getInetAddress, getLocalAddress, getLocalPort, getLocalSocketAddress, getPort, getReceiveBufferSize, getRemoteSocketAddress, getReuseAddress, getSendBufferSize, getSoTimeout, getTrafficClass, isBound, isClosed, isConnected, receive, send, setBroadcast, setDatagramSocketImplFactory, setReceiveBufferSize, setReuseAddress, setSendBufferSize, setSoTimeout, setTrafficClass
public MulticastSocket() throws IOException
Если есть менеджер безопасности, checkListen
метод сначала вызывают с 0 как его параметр, чтобы гарантировать, что работа позволяется. Это могло привести к SecurityException.
Когда сокет создается DatagramSocket.setReuseAddress(boolean)
метод вызывают, чтобы включить опции сокета SO_REUSEADDR.
IOException
- если исключение ввода-вывода происходит, создавая MulticastSocketSecurityException
- если менеджер безопасности существует и checkListen
метод не позволяет работу.SecurityManager.checkListen(int)
, DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(int port) throws IOException
Если есть менеджер безопасности, checkListen
метод сначала вызывают с port
параметр как его параметр, чтобы гарантировать работу позволяется. Это могло привести к SecurityException.
Когда сокет создается DatagramSocket.setReuseAddress(boolean)
метод вызывают, чтобы включить опции сокета SO_REUSEADDR.
port
- порт, чтобы использоватьIOException
- если исключение ввода-вывода происходит, создавая MulticastSocketSecurityException
- если менеджер безопасности существует и checkListen
метод не позволяет работу.SecurityManager.checkListen(int)
, DatagramSocket.setReuseAddress(boolean)
public MulticastSocket(SocketAddress bindaddr) throws IOException
Или, если адрес null
, создайте несвязанный сокет.
Если есть менеджер безопасности, checkListen
метод сначала вызывают с портом SocketAddress как его параметр, чтобы гарантировать, что работа позволяется. Это могло привести к SecurityException.
Когда сокет создается DatagramSocket.setReuseAddress(boolean)
метод вызывают, чтобы включить опции сокета SO_REUSEADDR.
bindaddr
- Адрес сокета, чтобы связать с, или null
для несвязанного сокета.IOException
- если исключение ввода-вывода происходит, создавая MulticastSocketSecurityException
- если менеджер безопасности существует и checkListen
метод не позволяет работу.SecurityManager.checkListen(int)
, DatagramSocket.setReuseAddress(boolean)
@Deprecated public void setTTL(byte ttl) throws IOException
MulticastSocket
чтобы управлять контекстом многоадресных сообщений. ttl является 8-разрядным количеством без знака, и так должен быть в диапазоне 0 <= ttl <= 0xFF
.
ttl
- the time-to-liveIOException
- if an I/O exception occurs while setting the default time-to-live valuegetTTL()
public void setTimeToLive(int ttl) throws IOException
MulticastSocket
in order to control the scope of the multicasts. The ttl must be in the range 0 <= ttl <= 255
or an IllegalArgumentException
will be thrown. Multicast packets sent with a TTL of 0
are not transmitted on the network but may be delivered locally.
ttl
- the time-to-liveIOException
- if an I/O exception occurs while setting the default time-to-live valuegetTimeToLive()
@Deprecated public byte getTTL() throws IOException
IOException
- if an I/O exception occurs while getting the default time-to-live valuesetTTL(byte)
public int getTimeToLive() throws IOException
IOException
- if an I/O exception occurs while getting the default time-to-live valuesetTimeToLive(int)
public void joinGroup(InetAddress mcastaddr) throws IOException
setInterface
or setNetworkInterface
. If there is a security manager, this method first calls its checkMulticast
method with the mcastaddr
argument as its argument.
mcastaddr
- is the multicast address to joinIOException
- if there is an error joining or when the address is not a multicast address.SecurityException
- if a security manager exists and its checkMulticast
method doesn't allow the join.SecurityManager.checkMulticast(InetAddress)
public void leaveGroup(InetAddress mcastaddr) throws IOException
setInterface
or setNetworkInterface
. If there is a security manager, this method first calls its checkMulticast
method with the mcastaddr
argument as its argument.
mcastaddr
- is the multicast address to leaveIOException
- if there is an error leaving or when the address is not a multicast address.SecurityException
- if a security manager exists and its checkMulticast
method doesn't allow the operation.SecurityManager.checkMulticast(InetAddress)
public void joinGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
If there is a security manager, this method first calls its checkMulticast
method with the mcastaddr
argument as its argument.
mcastaddr
- is the multicast address to joinnetIf
- specifies the local interface to receive multicast datagram packets, or null to defer to the interface set by setInterface(InetAddress)
or setNetworkInterface(NetworkInterface)
IOException
- if there is an error joining or when the address is not a multicast address.SecurityException
- if a security manager exists and its checkMulticast
method doesn't allow the join.IllegalArgumentException
- if mcastaddr is null or is a SocketAddress subclass not supported by this socketSecurityManager.checkMulticast(InetAddress)
public void leaveGroup(SocketAddress mcastaddr, NetworkInterface netIf) throws IOException
If there is a security manager, this method first calls its checkMulticast
method with the mcastaddr
argument as its argument.
mcastaddr
- is the multicast address to leavenetIf
- specifies the local interface or null to defer to the interface set by setInterface(InetAddress)
or setNetworkInterface(NetworkInterface)
IOException
- if there is an error leaving or when the address is not a multicast address.SecurityException
- if a security manager exists and its checkMulticast
method doesn't allow the operation.IllegalArgumentException
- if mcastaddr is null or is a SocketAddress subclass not supported by this socketSecurityManager.checkMulticast(InetAddress)
public void setInterface(InetAddress inf) throws SocketException
inf
- the InetAddressSocketException
- if there is an error in the underlying protocol, such as a TCP error.getInterface()
public InetAddress getInterface() throws SocketException
InetAddress
representing the address of the network interface used for multicast packets.SocketException
- if there is an error in the underlying protocol, such as a TCP error.setInterface(java.net.InetAddress)
public void setNetworkInterface(NetworkInterface netIf) throws SocketException
netIf
- the interfaceSocketException
- if there is an error in the underlying protocol, such as a TCP error.getNetworkInterface()
public NetworkInterface getNetworkInterface() throws SocketException
NetworkInterface
currently setSocketException
- if there is an error in the underlying protocol, such as a TCP error.setNetworkInterface(NetworkInterface)
public void setLoopbackMode(boolean disable) throws SocketException
Because this option is a hint, applications that want to verify what loopback mode is set to should call getLoopbackMode()
disable
- true
to disable the LoopbackModeSocketException
- if an error occurs while setting the valuegetLoopbackMode()
public boolean getLoopbackMode() throws SocketException
SocketException
- if an error occurs while getting the valuesetLoopbackMode(boolean)
@Deprecated public void send(DatagramPacket p, byte ttl) throws IOException
setInterface
. If there is a security manager, this method first performs some security checks. First, if p.getAddress().isMulticastAddress()
is true, this method calls the security manager's checkMulticast
method with p.getAddress()
and ttl
as its arguments. If the evaluation of that expression is false, this method instead calls the security manager's checkConnect
method with arguments p.getAddress().getHostAddress()
and p.getPort()
. Each call to a security manager method could result in a SecurityException if the operation is not allowed.
p
- is the packet to be sent. The packet should contain the destination multicast ip address and the data to be sent. One does not need to be the member of the group to send packets to a destination multicast address.ttl
- optional time to live for multicast packet. default ttl is 1.IOException
- is raised if an error occurs i.e error while setting ttl.SecurityException
- if a security manager exists and its checkMulticast
or checkConnect
method doesn't allow the send.DatagramSocket.send(java.net.DatagramPacket)
, DatagramSocket.receive(java.net.DatagramPacket)
, SecurityManager.checkMulticast(java.net.InetAddress, byte)
, SecurityManager.checkConnect(java.lang.String, int)
For further API reference and developer documentation, see
Copyright © 1993, 2011, Oracle and/or its affiliates. All rights reserved.