Clase Java.net.NetworkInterface en Java

Esta clase representa la interfaz de red, tanto de software como de hardware, su nombre, la lista de direcciones IP asignadas y toda la información relacionada. Se puede usar en los casos en que queremos usar específicamente una interfaz particular para transmitir nuestro paquete en un sistema con múltiples NIC. 
¿Qué es una interfaz de red?  
Se puede pensar en una interfaz de red como un punto en el que su computadora se conecta a la red. No es necesariamente una pieza de hardware, sino que también puede implementarse en software. Por ejemplo, una interfaz de bucle invertido que se utiliza con fines de prueba. 
Métodos : 
 

1.getName() : Devuelve el nombre de esta interfaz de red. 

Syntax : public String getName()

2.getInetAddresses() : Devuelve una enumeración de todas las direcciones de red vinculadas a esta interfaz de red, si el administrador de seguridad lo permite. 

Syntax :public Enumeration getInetAddresses()

3.getInterfaceAddresses() : Devuelve una lista de todas las direcciones de interfaz en esta interfaz. 
 

Syntax :public List getInterfaceAddresses()

4.getSubInterfaces() : Devuelve una enumeración de todas las subinterfaces o interfaces virtuales de esta interfaz de red. Por ejemplo, eth0:2 es una subinterfaz de eth0. 
 

Syntax :public Enumeration getSubInterfaces()

5.getParent() : en el caso de una subinterfaz, este método devuelve la interfaz principal. Si no es una subinterfaz, este método devolverá un valor nulo. 
 

Syntax :public NetworkInterface getParent()

6.getIndex() : Devuelve el índice asignado a esta interfaz de red por el sistema. Los índices se pueden utilizar en lugar de nombres largos para hacer referencia a cualquier interfaz del dispositivo. 
 

Syntax :public int getIndex()

7.getDisplayName() : este método devuelve el nombre de la interfaz de red en un formato de string legible. 
 

Syntax :public String getDisplayName()

8.getByName() : busca y devuelve la interfaz de red con el nombre especificado o nula si no existe. 
 

Syntax :public static NetworkInterface getByName(String name)
                                  throws SocketException
Parameters :
name : name of network interface to search for.
Throws :
SocketException : if I/O error occurs.

9.getByIndex() : realiza una función similar a la función anterior con el índice utilizado como parámetro de búsqueda en lugar del nombre. 
 

Syntax :public static NetworkInterface getByIndex(int index)
                                  throws SocketException
Parameters :
index : index of network interface to search for.
Throws :
SocketException : if I/O error occurs.

10.getByInetAddress() : este método es ampliamente utilizado ya que devuelve la interfaz de red a la que está vinculada la dirección de red especificada. Si una InetAddress está vinculada a varias interfaces, se puede devolver cualquiera de las interfaces. 
 

Syntax : public static NetworkInterface getByInetAddress(InetAddress addr)
                                         throws SocketException
Parameters : 
addr : address to search for
Throws : 
SocketException : If IO error occurs

11.getNetworkInterfaces() : Devuelve todas las interfaces de red del sistema. 
 

Syntax :public static Enumeration getNetworkInterfaces()
                                                          throws SocketException
Throws :
SocketException : If IO error occurs

12.isUp() : Devuelve un valor booleano que indica si esta interfaz de red está activa y funcionando. 
 

Syntax : public boolean isUp()

13.isLoopback() : Devuelve un valor booleano que indica si esta interfaz es una interfaz loopback o no. 
 

 Syntax : public boolean isLoopback()

14.isPointToPoint() : Devuelve un valor booleano que indica si esta interfaz es una interfaz punto a punto o no. 
 

Syntax : public boolean isPointToPoint()

15.supportsMulticast() : Devuelve un valor booleano que indica si esta interfaz admite multidifusión o no. 
 

Syntax : public boolean supportsMulticast()

16.getHardwareAddress() : Devuelve una array de bytes que contiene la dirección de hardware (MAC) de esta interfaz. La persona que llama debe tener los permisos adecuados antes de llamar a este método. 
 

public byte[] getHardwareAddress()

17.getMTU() : Devuelve la unidad de transmisión máxima de esta interfaz. Una MTU es el tamaño más grande del paquete o trama que se puede enviar en una red basada en paquetes. 
 

Syntax :public int getMTU()

18.isVirtual() : Devuelve un valor booleano que indica si esta interfaz es una interfaz virtual o no. Las interfaces virtuales se utilizan junto con las interfaces físicas para proporcionar valores adicionales, como direcciones y MTU. 
 

Syntax : public boolean isVirtual()

19.equals() : este método se usa para comparar dos interfaces de red para la igualdad. Dos interfaces de red son iguales si tienen el mismo nombre y direcciones asociadas. 
 

Syntax :public boolean equals(Object obj)
Parameters : 
obj : Object to compare this network interface for equality

20.hashCode() : Devuelve el valor del código hash para este objeto. 
 

Syntax :public int hashCode()

21.toString() : Devuelve una descripción textual de este objeto. 
 

Syntax :public String toString()

Implementación Java: 
 

Java

//Java program to illustrate various
//networkInterface class methods.
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
 
public class NetworkInterfaceEx
{
    public static void main(String[] args) throws SocketException,
                                                 UnknownHostException
    {
 
        // getNetworkInterfaces() returns a list of all interfaces
        // present in the system.
        ArrayList<NetworkInterface> interfaces = Collections.list(
                                             NetworkInterface.getNetworkInterfaces());
 
        System.out.println("Information about present Network Interfaces...\n");
        for (NetworkInterface iface : interfaces)
        {
            // isUp() method used for checking whether the interface in process
            // is up and running or not.
            if (iface.isUp())
            {
 
                // getName() method
                System.out.println("Interface Name: " + iface.getName());
 
                // getDisplayName() method
                System.out.println("Interface display name: " + iface.getDisplayName());
 
                // gethardwareaddress() method
                System.out.println("Hardware Address: " +
                                   Arrays.toString(iface.getHardwareAddress()));
 
                // getParent() method
                System.out.println("Parent: " + iface.getParent());
 
                // getIndex() method
                System.out.println("Index: " + iface.getIndex());
                // Interface addresses of the network interface
                System.out.println("\tInterface addresses: ");
 
                // getInterfaceAddresses() method
                for (InterfaceAddress addr : iface.getInterfaceAddresses())
                {
                    System.out.println("\t\t" + addr.getAddress().toString());
                }
                // Interface addresses of the network interface
                System.out.println("\tInetAddresses associated with this interface: ");
 
                // getInetAddresses() method returns list of all
                // addresses currently bound to this interface
                Enumeration<InetAddress> en = iface.getInetAddresses();
                while (en.hasMoreElements())
                {
                    System.out.println("\t\t" + en.nextElement().toString());
                }
 
                // getMTU() method
                System.out.println("\tMTU: " + iface.getMTU());
 
                // getSubInterfaces() method
                System.out.println("\tSubinterfaces: " +
                                   Collections.list(iface.getSubInterfaces()));
 
                // isLoopback() method
                System.out.println("\this loopback: " + iface.isLoopback());
 
                // isVirtual() method
                System.out.println("\this virtual: " + iface.isVirtual());
 
                // isPointToPoint() method
                System.out.println("\this point to point: " + iface.isPointToPoint());
 
                // supportsMulticast() method
                System.out.println("Supports Multicast: " + iface.supportsMulticast());
 
            }
        }
 
        // getByIndex() method returns network interface
        // with the specified index
        NetworkInterface nif = NetworkInterface.getByIndex(1);
 
        // toString() method is used to display textual
        // information about this network interface
        System.out.println("Network interface 1: " + nif.toString());
 
        // getByName() method returns network interface
        // with the specified name
        NetworkInterface nif2 = NetworkInterface.getByName("eth0");
        InetAddress ip = InetAddress.getByName("localhost");
 
        // getbyInetAddress() method
        NetworkInterface nif3 = NetworkInterface.getByInetAddress(ip);
        System.out.println("\nlocalhost associated with: " + nif3);
 
        // equals() method
        boolean eq = nif.equals(nif2);
        System.out.println("nif==nif2: " + eq);
 
        // hashCode() method
        System.out.println("Hashcode : " + nif.hashCode());
    }
}

Producción : 
 

Information about present Network Interfaces...

Interface Name: lo
Interface display name: Software Loopback Interface 1
Hardware Address: null
Parent: null
Index: 1
    Interface addresses: 
        /127.0.0.1
        /0:0:0:0:0:0:0:1
    InetAddresses associated with this interface: 
        /127.0.0.1
        /0:0:0:0:0:0:0:1
    MTU: -1
    Subinterfaces: []
    is loopback: true
    is virtual: false
    is point to point: false
Supports Multicast: true
Interface Name: wlan5
Interface display name: Dell Wireless 1705 802.11b|g|n (2.4GHZ)
Hardware Address: [100, 90, 4, -90, 2, 15]
Parent: null
Index: 16
    Interface addresses: 
        /192.168.43.96
        /2405:205:1486:9a1b:e567:b46f:198a:fe0c
        /2405:205:1486:9a1b:8c93:9f82:6dd2:350c
        /fe80:0:0:0:e567:b46f:198a:fe0c%wlan5
    InetAddresses associated with this interface: 
        /192.168.43.96
        /2405:205:1486:9a1b:e567:b46f:198a:fe0c
        /2405:205:1486:9a1b:8c93:9f82:6dd2:350c
        /fe80:0:0:0:e567:b46f:198a:fe0c%wlan5
    MTU: 1500
    Subinterfaces: []
    is loopback: false
    is virtual: false
    is point to point: false
Supports Multicast: true
Network interface 1: name:lo (Software Loopback Interface 1)

loclhost associated with: name:lo (Software Loopback Interface 1)
nif==nif2: false
HashCode : 2544

El resultado del programa anterior diferirá si lo ejecuta en su sistema, ya que mostrará información sobre sus interfaces de red.
Referencias: 
Documentación oficial de Java 
Este artículo es una contribución de Rishabh Mahrsee . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *