Module  java.base
软件包  java.nio.channels

Class MembershipKey



  • public abstract class MembershipKey
    extends Object
    代表互联网协议(IP)组播组成员身份的令牌。

    会员密钥可以表示用于接收发送到组的所有数据报的成员资格,或者它可以是源特定的 ,这意味着它表示仅从特定源地址接收数据报的成员资格。 会员密钥是否是特定于源的可以通过调用其sourceAddress方法来确定。

    会员密钥在创建时有效,并保持有效,直到通过调用drop方法删除会员资格,或者该通道关闭。 会员密钥的有效性可以通过调用其isValid方法来测试。

    在会员密钥不是源特定且底层操作系统支持源过滤的情况下,可以使用blockunblock方法来阻止或解除来自特定源地址的组播数据报。

    从以下版本开始:
    1.7
    另请参见:
    MulticastChannel
    • 构造方法详细信息

      • MembershipKey

        protected MembershipKey​()
        初始化此类的新实例。
    • 方法详细信息

      • isValid

        public abstract boolean isValid​()
        告知这个会员资格是否有效。

        多播组成员身份在创建时有效,并保持有效,直到通过调用drop方法删除成员资格,或者通道关闭。

        结果
        true如果该会员密钥有效,否则为 false
      • drop

        public abstract void drop​()
        删除会员资格

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

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

        返回时,此会员对象将为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