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