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