模块  java.base
软件包  java.nio.channels

Class MembershipKey


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

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

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

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

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

      • 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源地址,否则为 null