# NetworkInterface

public final class **NetworkInterface** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
This class represents a Network Interface made up of a name,
and a list of IP addresses assigned to this interface.
It is used to identify the local interface on which a multicast group
is joined.

Interfaces are normally known by names such as "le0".


Note that information about
`https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html`s may be restricted. For example, non-system apps
with `targetSdkVersion >= android.os.Build.VERSION_CODES.R` will only
have access to information about `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html`s that are
associated with an `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html`.

### Public Method Summary

|---|---|
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this object against the specified object. |
| static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html) | [getByIndex](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getByIndex(int))(int index) Get a network interface given its index. |
| static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html) | [getByInetAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getByInetAddress(java.net.InetAddress))([InetAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html) addr) Convenience method to search for a network interface that has the specified Internet Protocol (IP) address bound to it. |
| static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html) | [getByName](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getByName(java.lang.String))([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name) Searches for the network interface with the specified name. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getDisplayName](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getDisplayName())() Get the display name of this network interface. |
| byte\[\] | [getHardwareAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getHardwareAddress())() Returns the hardware address (usually MAC) of the interface if it has one and if it can be accessed given the current privileges. |
| int | [getIndex](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getIndex())() Returns the index of this network interface. |
| [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[InetAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html)\> | [getInetAddresses](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getInetAddresses())() Convenience method to return an Enumeration with all or a subset of the InetAddresses bound to this network interface. |
| [List](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html)\<[InterfaceAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InterfaceAddress.html)\> | [getInterfaceAddresses](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getInterfaceAddresses())() Get a List of all or a subset of the `InterfaceAddresses` of this network interface. |
| int | [getMTU](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getMTU())() Returns the Maximum Transmission Unit (MTU) of this interface. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [getName](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getName())() Get the name of this network interface. |
| static [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)\> | [getNetworkInterfaces](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getNetworkInterfaces())() Returns all the interfaces on this machine. |
| [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html) | [getParent](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getParent())() Returns the parent NetworkInterface of this interface if this is a subinterface, or `null` if it is a physical (non virtual) interface or has no parent. |
| [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)\> | [getSubInterfaces](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getSubInterfaces())() Get an Enumeration with all the subinterfaces (also known as virtual interfaces) attached to this network interface. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#hashCode())() Returns an integer hash code for this object. |
| boolean | [isLoopback](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#isLoopback())() Returns whether a network interface is a loopback interface. |
| boolean | [isPointToPoint](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#isPointToPoint())() Returns whether a network interface is a point to point interface. |
| boolean | [isUp](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#isUp())() Returns whether a network interface is up and running. |
| boolean | [isVirtual](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#isVirtual())() Returns whether this interface is a virtual interface (also called subinterface). |
| boolean | [supportsMulticast](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#supportsMulticast())() Returns whether a network interface supports multicasting or not. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#toString())() Returns a string containing a concise, human-readable description of this object. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

## Public Methods

#### public boolean
**equals**
([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj)

Compares this object against the specified object.
The result is `true` if and only if the argument is
not `null` and it represents the same NetworkInterface
as this object.


Two instances of `NetworkInterface` represent the same
NetworkInterface if both name and addrs are the same for both.

##### Parameters

| obj | the object to compare against. |
|---|---|

##### Returns

- `true` if the objects are the same; `false` otherwise.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html#getAddress()`

#### public static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)
**getByIndex**
(int index)

Get a network interface given its index.

##### Parameters

| index | an integer, the index of the interface |
|---|---|

##### Returns

- the NetworkInterface obtained from its index, or `null` if an interface with the specified index does not exist or [can't be accessed](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface#access-restrictions).

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if index has a negative value |
|---|---|

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getIndex()`

#### public static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)
**getByInetAddress**
([InetAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html) addr)

Convenience method to search for a network interface that
has the specified Internet Protocol (IP) address bound to
it.


If the specified IP address is bound to multiple network
interfaces it is not defined which network interface is
returned.

##### Parameters

| addr | The `InetAddress` to search with. |
|---|---|

##### Returns

- A `NetworkInterface` or `null` if there is no network interface with the specified IP address.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | If an I/O error occurs. |
| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | If the specified address is `null`. |
|---|---|

#### public static [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)
**getByName**
([String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) name)

Searches for the network interface with the specified name.

##### Parameters

| name | The name of the network interface. |
|---|---|

##### Returns

- A `NetworkInterface` with the specified name, or `null` if the network interface with the specified name does not exist or [can't be
  accessed](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface#access-restrictions).

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | If an I/O error occurs. |
| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | If the specified name is `null`. |
|---|---|

#### public [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getDisplayName**
()

Get the display name of this network interface.
A display name is a human readable String describing the network
device.

##### Returns

- a non-empty string representing the display name of this network interface, or null if no display name is available.

#### public byte\[\]
**getHardwareAddress**
()

Returns the hardware address (usually MAC) of the interface if it
has one and if it can be accessed given the current privileges.
If a security manager is set, then the caller must have
the permission `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetPermission.html`("getNetworkInformation").

##### Returns

- a byte array containing the address, or `null` if the address doesn't exist, is not accessible or a security manager is set and the caller does not have the permission NetPermission("getNetworkInformation"). For example, this method will generally return `null` when called by non-system apps having `targetSdkVersion >= android.os.Build.VERSION_CODES.R`.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public int
**getIndex**
()

Returns the index of this network interface. The index is an integer greater
or equal to zero, or `-1` for unknown. This is a system specific value
and interfaces with the same name can have different indexes on different
machines.

##### Returns

- the index of this network interface or `-1` if the index is unknown

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html#getByIndex(int)`

#### public [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[InetAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html)\>
**getInetAddresses**
()

Convenience method to return an Enumeration with all or a
subset of the InetAddresses bound to this network interface.


If there is a security manager, its `checkConnect`
method is called for each InetAddress. Only InetAddresses where
the `checkConnect` doesn't throw a SecurityException
will be returned in the Enumeration. However, if the caller has the
`https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetPermission.html`("getNetworkInformation") permission, then all
InetAddresses are returned.

##### Returns

- an Enumeration object with all or a subset of the InetAddresses bound to this network interface

#### public [List](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/List.html)\<[InterfaceAddress](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InterfaceAddress.html)\>
**getInterfaceAddresses**
()

Get a List of all or a subset of the `InterfaceAddresses`
of this network interface.


If there is a security manager, its `checkConnect`
method is called with the InetAddress for each InterfaceAddress.
Only InterfaceAddresses where the `checkConnect` doesn't throw
a SecurityException will be returned in the List.

##### Returns

- a `List` object with all or a subset of the InterfaceAddresss of this network interface

#### public int
**getMTU**
()

Returns the Maximum Transmission Unit (MTU) of this interface.

##### Returns

- the value of the MTU for that interface.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**getName**
()

Get the name of this network interface.

##### Returns

- the name of this network interface

#### public static [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)\>
**getNetworkInterfaces**
()

Returns all the interfaces on this machine. The `Enumeration`
contains at least one element, possibly representing a loopback
interface that only supports communication between entities on
this machine.

NOTE: can use getNetworkInterfaces()+getInetAddresses()
to obtain all IP addresses for this node


For non-system apps with
`targetSdkVersion >= android.os.Build.VERSION_CODES.R`, this
method will only return information for `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html`s that
are associated with an `https://developers.google.com/j2objc/javadoc/jre/reference/java/net/InetAddress.html`.

##### Returns

- an Enumeration of NetworkInterfaces found on this machine that [are accessible](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface#access-restrictions).

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public [NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)
**getParent**
()

Returns the parent NetworkInterface of this interface if this is
a subinterface, or `null` if it is a physical
(non virtual) interface or has no parent.

##### Returns

- The `NetworkInterface` this interface is attached to.

#### public [Enumeration](https://developers.google.com/j2objc/javadoc/jre/reference/java/util/Enumeration.html)\<[NetworkInterface](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/NetworkInterface.html)\>
**getSubInterfaces**
()

Get an Enumeration with all the subinterfaces (also known as virtual
interfaces) attached to this network interface.


For instance eth0:1 will be a subinterface to eth0.

##### Returns

- an Enumeration object with all of the subinterfaces of this network interface

#### public int
**hashCode**
()

Returns an integer hash code for this object. By contract, any two
objects for which `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object)` returns `true` must return
the same hash code value. This means that subclasses of `Object`
usually override both methods or neither method.

Note that hash values must not change over time unless information used in equals
comparisons also changes.

See [Writing a correct
`hashCode` method](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#writing_hashCode)
if you intend implementing your own `hashCode` method.

##### Returns

- this object's hash code.

#### public boolean
**isLoopback**
()

Returns whether a network interface is a loopback interface.

##### Returns

- `true` if the interface is a loopback interface.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public boolean
**isPointToPoint**
()

Returns whether a network interface is a point to point interface.
A typical point to point interface would be a PPP connection through
a modem.

##### Returns

- `true` if the interface is a point to point interface.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public boolean
**isUp**
()

Returns whether a network interface is up and running.

##### Returns

- `true` if the interface is up and running.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public boolean
**isVirtual**
()

Returns whether this interface is a virtual interface (also called
subinterface).
Virtual interfaces are, on some systems, interfaces created as a child
of a physical interface and given different settings (like address or
MTU). Usually the name of the interface will the name of the parent
followed by a colon (:) and a number identifying the child since there
can be several virtual interfaces attached to a single physical
interface.

##### Returns

- `true` if this interface is a virtual interface.

#### public boolean
**supportsMulticast**
()

Returns whether a network interface supports multicasting or not.

##### Returns

- `true` if the interface supports Multicasting.

##### Throws

| [SocketException](https://developers.google.com/j2objc/javadoc/jre/reference/java/net/SocketException.html) | if an I/O error occurs. |
|---|---|

#### public [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html)
**toString**
()

Returns a string containing a concise, human-readable description of this
object. Subclasses are encouraged to override this method and provide an
implementation that takes into account the object's type and data. The
default implementation is equivalent to the following expression:

```
   getClass().getName() + '@' + Integer.toHexString(hashCode())
```

See [Writing a useful
`toString` method](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#writing_toString)
if you intend implementing your own `toString` method.

##### Returns

- a printable representation of this object.