public abstract class MembershipKey extends Object
会员密钥可以表示用于接收发送到组的所有数据报的成员资格,或者它可以是源特定的 ,这意味着它表示仅从特定源地址接收数据报的成员资格。 会员密钥是否是特定于源的可以通过调用其sourceAddress
方法来确定 。
会员密钥在创建时有效,并保持有效,直到通过调用drop
方法删除会员身份 ,或者该通道关闭。 会员密钥的有效性可以通过调用其isValid
方法来测试。
在会员密钥不是源特定且底层操作系统支持源过滤的情况下,可以使用block
和unblock
方法来阻止或解除来自特定源地址的组播数据报。
MulticastChannel
Modifier | Constructor and Description |
---|---|
protected |
MembershipKey()
初始化此类的新实例。
|
Modifier and Type | Method and Description |
---|---|
abstract MembershipKey |
block(InetAddress source)
阻止来自给定源地址的组播数据报。
|
abstract MulticastChannel |
channel()
返回创建此成员资格密钥的通道。
|
abstract void |
drop()
删除会员资格
|
abstract InetAddress |
group()
返回创建此成员资格密钥的多播组。
|
abstract boolean |
isValid()
告知这个会员资格是否有效。
|
abstract NetworkInterface |
networkInterface()
返回创建此会员密钥的网络接口。
|
abstract InetAddress |
sourceAddress()
返回如果该会员是关键特定源,或源地址
null 如果会员不特定源。
|
abstract MembershipKey |
unblock(InetAddress source)
|
public abstract boolean isValid()
true
如果此会员密钥有效,
false
false
public abstract void drop()
public abstract MembershipKey block(InetAddress source) throws IOException
如果此成员密钥不是源特定的,并且底层操作系统支持源过滤,则该方法将阻止来自给定源地址的组播数据报。 如果给定的源地址已经被阻止,那么这个方法没有任何效果。 在源地址被阻塞之后,仍然可以从该源接收数据报。 当数据报等待在套接字的接收缓冲区中接收时,可能会出现这种情况。
source
- 要阻止的源地址
IllegalArgumentException
- 如果
source
参数不是单播地址或与组播组不同的地址类型
IllegalStateException
- 如果此成员资格密钥是源特定的或不再有效
UnsupportedOperationException
- 如果底层操作系统不支持源过滤
IOException
- 如果发生I / O错误
public abstract MembershipKey unblock(InetAddress source)
source
- 要解除封锁的源地址
IllegalStateException
- 如果给定的源地址当前未被阻止或成员资格密钥不再有效
public abstract MulticastChannel channel()
invalid
,此方法也将继续返回。
public abstract InetAddress group()
invalid
,此方法也将继续返回该组。
public abstract NetworkInterface networkInterface()
public abstract InetAddress sourceAddress()
null
如果会员不特定源。
null