Programa Java para obtener la dirección MAC del sistema de la máquina Windows y Linux

La dirección de control de acceso a medios (dirección MAC) es un identificador hexadecimal único asignado a un controlador de interfaz de red (NIC) para ser utilizado como dirección de red en las comunicaciones dentro de un segmento de red. Este uso es común en la mayoría de las tecnologías de red IEEE 802 , incluidas Ethernet, Wi-Fi y Bluetooth. Dentro del modelo de red de interconexión de sistemas abiertos (OSI) , las direcciones MAC se utilizan en la subcapa del protocolo de control de acceso al medio de la capa de enlace de datos. Como se representa normalmente, las direcciones MAC se reconocen como seis grupos de dos dígitos hexadecimales, separados por guiones, dos puntos o sin separador.

Las direcciones MAC son asignadas principalmente por los fabricantes de dispositivos y, por lo tanto, a menudo se mencionan como la dirección grabada o como una dirección de hardware Ethernet, una dirección de hardware o una dirección física.

mac or physical address

Ejemplo 1

Java

// Java program to access the MAC address of the
// localhost machine
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class MACAddress {
  
    // method to get the MAC Address
    void getMAC(InetAddress addr) throws SocketException
    {
        // create a variable of type NetworkInterface and
        // assign it with the value returned by the
        // getByInetAddress() method
        NetworkInterface iface
            = NetworkInterface.getByInetAddress(addr);
  
        // create a byte array and store the value returned
        // by the NetworkInterface.getHardwareAddress()
        // method
        byte[] mac = iface.getHardwareAddress();
        
        // convert the obtained byte array into a printable
        // String
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mac.length; i++) {
            sb.append(String.format(
                "%02X%s", mac[i],
                (i < mac.length - 1) ? "-" : ""));
        }
        
        // print the final String containing the MAC Address
        System.out.println(sb.toString());
    }
  
    // Driver method
    public static void main(String[] args) throws Exception
    {
        // a variable of type InetAddress to store the
        // address of the local host
        InetAddress addr = InetAddress.getLocalHost();
        
        // instantiate the MACAddress class
        MACAddress obj = new MACAddress();
        System.out.print("MAC Address of the system : ");
        
        // call the getMAC() method on the current object
        // passing the localhost address as the parameter
        obj.getMAC(addr);
    }
}

Producción

physical or mac address

Ejemplo 2 ( cuando el dispositivo tiene más de una dirección MAC )

Java

// Java program to access all the MAC addresses of the
// localhost machine
  
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Enumeration;
public class MACAddress {
    public static void main(String[] args) throws Exception
    {
        // instantiate the MACAddress class
        MACAddress obj = new MACAddress();
        
        // call the getMAC() method on the current object
        // passing the localhost address as the parameter
        obj.getMAC();
    }
  
    // method to get the MAC addresses of the
    // localhost machine
    void getMAC()
    {
        try {
            
            // create an Enumeration of type
            // NetworkInterface and store the values
            // returned by
            // NetworkInterface.getNetworkInterfaces()
            // method
            Enumeration<NetworkInterface> networks
                = NetworkInterface.getNetworkInterfaces();
            
            // for every network in the networks Enumeration
            while (networks.hasMoreElements()) {
                NetworkInterface network
                    = networks.nextElement();
                
                // call getHardwareAddress() method on each
                // network and store the returned value in a
                // byte array
                byte[] mac = network.getHardwareAddress();
  
                if (mac != null) {
                    System.out.print(
                        "Current MAC address : ");
                    
                    // convert the obtained byte array into
                    // a printable String
                    StringBuilder sb = new StringBuilder();
                    for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format(
                            "%02X%s", mac[i],
                            (i < mac.length - 1) ? "-"
                                                 : ""));
                    }
                    
                    // print the final String containing the
                    // MAC Address
                    System.out.println(sb.toString());
                }
            }
        }
        catch (SocketException e) {
            e.printStackTrace();
        }
    }
}

Producción

multiple mac addresses

Publicación traducida automáticamente

Artículo escrito por ushashree 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 *