Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Protected Ctors](https://developer.android.com/reference/java/nio/channels/MembershipKey#proctors) \| [Methods](https://developer.android.com/reference/java/nio/channels/MembershipKey#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/nio/channels/MembershipKey#inhmethods)

# MembershipKey


`
public


abstract
class
MembershipKey
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.nio.channels.MembershipKey |

<br />

*** ** * ** ***

A token representing the membership of an Internet Protocol (IP) multicast
group.

A membership key may represent a membership to receive all datagrams sent
to the group, or it may be *source-specific* , meaning that it
represents a membership that receives only datagrams from a specific source
address. Whether or not a membership key is source-specific may be determined
by invoking its `https://developer.android.com/reference/java/nio/channels/MembershipKey#sourceAddress()` method.

A membership key is valid upon creation and remains valid until the
membership is dropped by invoking the `https://developer.android.com/reference/java/nio/channels/MembershipKey#drop()` method, or
the channel is closed. The validity of the membership key may be tested
by invoking its `https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()` method.

Where a membership key is not source-specific and the underlying operation
system supports source filtering, then the `https://developer.android.com/reference/java/nio/channels/MembershipKey#block(java.net.InetAddress)` and `https://developer.android.com/reference/java/nio/channels/MembershipKey#unblock(java.net.InetAddress)` methods can be used to block or unblock multicast datagrams
from particular source addresses.
**See also:**

- `https://developer.android.com/reference/java/nio/channels/MulticastChannel`

## Summary

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/java/nio/channels/MembershipKey#MembershipKey()() ` Initializes a new instance of this class. |

| ### Public methods ||
|---|---|
| ` abstract https://developer.android.com/reference/java/nio/channels/MembershipKey` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#block(java.net.InetAddress)(https://developer.android.com/reference/java/net/InetAddress source) ` Block multicast datagrams from the given source address. |
| ` abstract https://developer.android.com/reference/java/nio/channels/MulticastChannel` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#channel()() ` Returns the channel for which this membership key was created. |
| ` abstract void` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#drop()() ` Drop membership. |
| ` abstract https://developer.android.com/reference/java/net/InetAddress` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#group()() ` Returns the multicast group for which this membership key was created. |
| ` abstract boolean` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()() ` Tells whether or not this membership is valid. |
| ` abstract https://developer.android.com/reference/java/net/NetworkInterface` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#networkInterface()() ` Returns the network interface for which this membership key was created. |
| ` abstract https://developer.android.com/reference/java/net/InetAddress` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#sourceAddress()() ` Returns the source address if this membership key is source-specific, or `null` if this membership is not source-specific. |
| ` abstract https://developer.android.com/reference/java/nio/channels/MembershipKey` | ` https://developer.android.com/reference/java/nio/channels/MembershipKey#unblock(java.net.InetAddress)(https://developer.android.com/reference/java/net/InetAddress source) ` Unblock multicast datagrams from the given source address that was previously blocked using the `https://developer.android.com/reference/java/nio/channels/MembershipKey#block(java.net.InetAddress)` method. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Protected constructors

### MembershipKey

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected MembershipKey ()
```

Initializes a new instance of this class.

<br />

## Public methods

### block

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract MembershipKey block (InetAddress source)
```

Block multicast datagrams from the given source address.

If this membership key is not source-specific, and the underlying
operating system supports source filtering, then this method blocks
multicast datagrams from the given source address. If the given source
address is already blocked then this method has no effect.
After a source address is blocked it may still be possible to receive
datagrams from that source. This can arise when datagrams are waiting to
be received in the socket's receive buffer.

<br />

| Parameters ||
|---|---|
| `source` | `InetAddress`: The source address to block <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/nio/channels/MembershipKey` | This membership key <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/io/IOException` | If an I/O error occurs |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `source` parameter is not a unicast address or is not the same address type as the multicast group |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If this membership key is source-specific or is no longer valid |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | If the underlying operating system does not support source filtering |

### channel

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract MulticastChannel channel ()
```

Returns the channel for which this membership key was created. This
method will continue to return the channel even after the membership
becomes `https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/nio/channels/MulticastChannel` | the channel <br /> |

### drop

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract void drop ()
```

Drop membership.

If the membership key represents a membership to receive all datagrams
then the membership is dropped and the channel will no longer receive any
datagrams sent to the group. If the membership key is source-specific
then the channel will no longer receive datagrams sent to the group from
that source address.

After membership is dropped it may still be possible to receive
datagrams sent to the group. This can arise when datagrams are waiting to
be received in the socket's receive buffer. After membership is dropped
then the channel may `https://developer.android.com/reference/java/nio/channels/MulticastChannel#join(java.net.InetAddress,%20java.net.NetworkInterface)` the group again
in which case a new membership key is returned.

Upon return, this membership object will be `https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()`.
If the multicast group membership is already invalid then invoking this
method has no effect. Once a multicast group membership is invalid,
it remains invalid forever.

<br />

### group

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract InetAddress group ()
```

Returns the multicast group for which this membership key was created.
This method will continue to return the group even after the membership
becomes `https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/net/InetAddress` | the multicast group <br /> |

### isValid

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract boolean isValid ()
```

Tells whether or not this membership is valid.

A multicast group membership is valid upon creation and remains
valid until the membership is dropped by invoking the `https://developer.android.com/reference/java/nio/channels/MembershipKey#drop()`
method, or the channel is closed.

<br />

| Returns ||
|---|---|
| `boolean` | `true` if this membership key is valid, `false` otherwise <br /> |

### networkInterface

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract NetworkInterface networkInterface ()
```

Returns the network interface for which this membership key was created.
This method will continue to return the network interface even after the
membership becomes `https://developer.android.com/reference/java/nio/channels/MembershipKey#isValid()`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/net/NetworkInterface` | the network interface <br /> |

### sourceAddress

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract InetAddress sourceAddress ()
```

Returns the source address if this membership key is source-specific,
or `null` if this membership is not source-specific.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/net/InetAddress` | The source address if this membership key is source-specific, otherwise `null` <br /> |

### unblock

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract MembershipKey unblock (InetAddress source)
```

Unblock multicast datagrams from the given source address that was
previously blocked using the `https://developer.android.com/reference/java/nio/channels/MembershipKey#block(java.net.InetAddress)` method.

<br />

| Parameters ||
|---|---|
| `source` | `InetAddress`: The source address to unblock <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/nio/channels/MembershipKey` | This membership key <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | If the given source address is not currently blocked or the membership key is no longer valid |