public interface MulticastChannel extends NetworkChannel
IP多播是IP数据报传输的一组是零个或多个由一个目的地址标识的主机名。
在一个IPv4
套接字通道的情况下,底层操作系统支持 RFC 2236: Internet Group Management Protocol, Version 2 (IGMPv2)。它可以支持源过滤指定的 RFC 3376: Internet Group Management Protocol, Version 3 (IGMPv3)。对于渠道的IPv6
插座,相当于标准 RFC 2710: Multicast Listener Discovery (MLD) for IPv6和 RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6。
的join(InetAddress,NetworkInterface)
所使用的方法是加入一个组和接收所有的多播数据报发送到组。一个频道可以加入多个组播组,可以加入几interfaces
同组。会员下降调用返回的MembershipKey
的drop
方法。如果基础平台支持源过滤然后block
和unblock
方法可以用来阻止或允许多播数据报从特定的源地址。
的join(InetAddress,NetworkInterface,InetAddress)
法开始接收发送到一组其源地址匹配给定的源地址的数据报。该方法将UnsupportedOperationException
如果基础平台不支持源过滤。会员是累积性的,这种方法可以调用了同组和接口允许从其他源地址接收数据报的。该方法返回一个MembershipKey
代表会员从给定的源地址接收数据报。调用的方法的关键drop
滴会员,从源地址的数据报,不再能接受。
通道的创作应指定对应于该信道将加入组播组地址类型的ProtocolFamily
。有没有保证,在一个协议族套接字通道可以连接和接收多播数据报当组播组地址对应到另一个协议族。例如,它是具体实施如果一个IPv6
套接字通道可以加入多播组的多播数据报IPv4
接收发送到组。
通道的插座应绑定到wildcard
地址。如果套接字绑定到一个特定的地址,而不是通配符地址那么多播数据报套接字接收它的具体实施。
的SO_REUSEADDR
选项应该可以binding
插座之前。这是必需的,允许该组的多个成员绑定到相同的地址。
使用示例:
在这个接口上加入多播组,并使用此发送多播数据报/接口网络接口网络接口通过getByName(NI =“hme0”);datagramchannel直流= DatagramChannel.开放(standardprotocolfamily。INET)(standardsocketoptions.so_reuseaddr SetOption,真的)。。绑定(新inetsocketaddress(5000))(standardsocketoptions.ip_multicast_if SetOption,Ni);InetAddress组它。通过getByName(“225.4.5.6”);membershipkey关键=直流。加入(组、Ni);
Modifier and Type | Method and Description |
---|---|
void |
close()
关闭此通道。
|
MembershipKey |
join(InetAddress group, NetworkInterface interf)
加入一个多播组开始接收所有的数据包发送到组,返回一个会员的关键。
|
MembershipKey |
join(InetAddress group, NetworkInterface interf, InetAddress source)
加入一个多播组开始接收从一个给定的源地址的数据包发送到组。
|
bind, getLocalAddress, getOption, setOption, supportedOptions
void close() throws IOException
如果信道是一个多播组的成员dropped
成员。返回后,该membership-key
将invalid
。
本法另有行为完全由Channel
指定界面。
close
接口
AutoCloseable
close
接口
Channel
close
接口
Closeable
IOException
如果I/O错误发生
MembershipKey join(InetAddress group, NetworkInterface interf) throws IOException
如果这个频道是目前集团的成员之一,在给定的接口接收数据包然后所有会员的关键,代表会员,返回。否则,此通道将加入该组,并返回所产生的新成员密钥。由此产生的会员关键不source-specific
。
一个多播信道可以加入多个组播组,包括同一组在一个以上的接口上。一个实现可能会对可能同时加入的组的数量施加限制。
group
-加入组播地址
interf
上的网络接口加入组
IllegalArgumentException
如果组参数不是一个
multicast
地址,或组参数是一个地址类型不是由这个渠道支持
IllegalStateException
如果通道已经源接口上的特定组的成员
UnsupportedOperationException
如果通道的插座不是一个网络协议的套接字
ClosedChannelException
-如果这通道关闭
IOException
如果I/O错误发生
SecurityException
-如果一个安全管理设置,其
checkMulticast
方法拒绝访问该组播组
MembershipKey join(InetAddress group, NetworkInterface interf, InetAddress source) throws IOException
如果这个频道是目前集团的成员之一,在给定的接口接收数据报从给定的源地址然后会员钥匙,代表会员,返回。否则,此通道将加入该组,并返回所产生的新成员密钥。由此产生的关键是source-specific
会员。
会员是累积性的,这种方法可以调用了同组和接口允许接收的源地址的数据报发送到组。
group
-加入组播地址
interf
上的网络接口加入组
source
-源地址
IllegalArgumentException
如果组参数不是一个
multicast
地址,源参数不是一个单播地址,这组参数是一个地址类型不支持这个频道,或者源参数不相同的地址类型为组
IllegalStateException
如果通道目前是在给定的接口接收的数据包的组的成员
UnsupportedOperationException
如果通道的插座不是一个网络协议的socket或源过滤不支持
ClosedChannelException
-如果这通道关闭
IOException
如果I/O错误发生
SecurityException
-如果一个安全管理设置,其
checkMulticast
方法拒绝访问该组播组
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.