java.lang.Object
java.nio.channels.MembershipKey
表示 Internet 协议 (IP) 多播组成员资格的令牌。
成员密钥可以表示接收发送到该组的所有数据报的成员资格,也可以是 source-specific ,这意味着它表示只接收来自特定源地址的数据报的成员资格。成员密钥是否是源特定的可以通过调用它的sourceAddress 方法来确定。
成员密钥在创建时有效,并且在通过调用 drop 方法删除成员资格或关闭通道之前一直有效。可以通过调用其 isValid 方法来测试成员密钥的有效性。
如果成员密钥不是源特定的,并且底层操作系统支持源过滤,那么 block 和 unblock 方法可用于阻止或取消阻止来自特定源地址的多播数据报。
- 自从:
- 1.7
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract MembershipKeyblock(InetAddress source) 阻止来自给定源地址的多播数据报。abstract MulticastChannelchannel()返回为其创建此成员密钥的通道。abstract voiddrop()取消会员资格。abstract InetAddressgroup()返回为其创建此成员密钥的多播组。abstract booleanisValid()告知此成员资格是否有效。abstract NetworkInterface返回为其创建此成员密钥的网络接口。abstract InetAddress如果此成员身份密钥是特定于源的,则返回源地址;如果此成员身份不是特定于源的,则返回null。abstract MembershipKeyunblock(InetAddress source) 从先前使用block方法阻止的给定源地址取消阻止多播数据报。
-
构造方法详细信息
-
MembershipKey
protected MembershipKey()初始化此类的新实例。
-
-
方法详情
-
isValid
public abstract boolean isValid()告知此成员资格是否有效。多播组成员资格在创建时有效,并且在通过调用
drop方法删除成员资格或关闭通道之前一直有效。- 返回:
true如果此成员密钥有效,false否则
-
drop
public abstract void drop() -
block
阻止来自给定源地址的多播数据报。如果此成员密钥不是特定于源的,并且底层操作系统支持源过滤,则此方法会阻止来自给定源地址的多播数据报。如果给定的源地址已经被阻止,则此方法无效。源地址被阻止后,它可能仍然可以从该源接收数据报。当套接字的接收缓冲区中等待接收数据报时,可能会出现这种情况。
- 参数:
source- 要阻止的源地址- 返回:
- 这个会员秘钥
- 抛出:
IllegalArgumentException- 如果source参数不是单播地址或与多播组的地址类型不同IllegalStateException- 如果此成员密钥是源特定的或不再有效UnsupportedOperationException- 如果底层操作系统不支持源过滤IOException- 如果发生 I/O 错误
-
unblock
从先前使用block方法阻止的给定源地址取消阻止多播数据报。- 参数:
source- 要解锁的源地址- 返回:
- 这个会员秘钥
- 抛出:
IllegalStateException- 如果给定的源地址当前未被阻止或成员密钥不再有效
-
channel
返回为其创建此成员密钥的通道。即使在成员资格变为invalid后,此方法仍将继续返回通道。- 返回:
- 这个通道
-
group
返回为其创建此成员密钥的多播组。即使在成员资格变为invalid之后,此方法仍将继续返回该组。- 返回:
- 组播组
-
networkInterface
返回为其创建此成员密钥的网络接口。即使成员资格变为invalid,此方法仍将继续返回网络接口。- 返回:
- 网络接口
-
sourceAddress
如果此成员身份密钥是特定于源的,则返回源地址;如果此成员身份不是特定于源的,则返回null。- 返回:
-
如果此成员密钥是源特定的,则为源地址,否则为
null
-