模块 java.base

类 MembershipKey

java.lang.Object
java.nio.channels.MembershipKey

public abstract class MembershipKey extends Object
表示 Internet 协议 (IP) 多播组成员资格的令牌。

成员密钥可以表示接收发送到该组的所有数据报的成员资格,也可以是 source-specific ,这意味着它表示只接收来自特定源地址的数据报的成员资格。成员密钥是否是源特定的可以通过调用它的sourceAddress 方法来确定。

成员密钥在创建时有效,并且在通过调用 drop 方法删除成员资格或关闭通道之前一直有效。可以通过调用其 isValid 方法来测试成员密钥的有效性。

如果成员密钥不是源特定的,并且底层操作系统支持源过滤,那么 block unblock 方法可用于阻止或取消阻止来自特定源地址的多播数据报。

自从:
1.7
参见:
  • 构造方法详细信息

    • MembershipKey

      protected MembershipKey()
      初始化此类的新实例。
  • 方法详情

    • isValid

      public abstract boolean isValid()
      告知此成员资格是否有效。

      多播组成员资格在创建时有效,并且在通过调用 drop 方法删除成员资格或关闭通道之前一直有效。

      返回:
      true 如果此成员密钥有效,false 否则
    • drop

      public abstract void drop()
      取消会员资格。

      如果成员密钥表示接收所有数据报的成员资格,则该成员资格将被删除,并且通道将不再接收发送到该组的任何数据报。如果成员密钥是特定于源的,则通道将不再接收从该源地址发送到该组的数据报。

      删除成员资格后,仍然可以接收发送到该组的数据报。当套接字的接收缓冲区中等待接收数据报时,可能会出现这种情况。成员资格被删除后,通道可能会再次 join 组,在这种情况下,将返回一个新的成员资格密钥。

      返回后,此成员资格对象将为 invalid 。如果多播组成员资格已经无效,则调用此方法无效。组播组成员身份一旦失效,就永远失效。

    • 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