Comment obtenir une adresse MAC en Java

Comment obtenir l'adresse MAC en Java

Depuis JDK 1.6, les développeurs Java peuvent accéder aux détails de la carte réseau via la classeNetworkInterface. Dans cet exemple, nous vous montrons comment obtenir l'adresse MAC localhost en Java.

App.java – Get MAC Address via NetworkInterface.getByInetAddress()

package com.example;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;

public class App{

   public static void main(String[] args){

    InetAddress ip;
    try {

        ip = InetAddress.getLocalHost();
        System.out.println("Current IP address : " + ip.getHostAddress());

        NetworkInterface network = NetworkInterface.getByInetAddress(ip);

        byte[] mac = network.getHardwareAddress();

        System.out.print("Current MAC address : ");

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < mac.length; i++) {
            sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));
        }
        System.out.println(sb.toString());

    } catch (UnknownHostException e) {

        e.printStackTrace();

    } catch (SocketException e){

        e.printStackTrace();

    }

   }

}

Sortie

Current IP address : 192.168.1.22
Current MAC address : 00-26-B9-9B-61-BF

Note
Cette méthode NetworkInterfaceNetworkInterface.getHardwareAddress () est uniquement autorisée à accéder à l'adresse MAC de l'hôte local, pas à l'adresse MAC de l'hôte distant.

Ancien jour…

Avant la sortie de JDK1.6, beaucoup utilisent la commande et le modèle pour obtenir l'adresse MAC dans Windows, des modifications mineures du code lui permettront également d'obtenir l'adresse MAC dans * nux.

App.java - Get MAC Address via command & pattern

package com.example;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class App{

   public static void main(String[] args) throws IOException{

       String command = "ipconfig /all";
       Process p = Runtime.getRuntime().exec(command);

       BufferedReader inn = new BufferedReader(new InputStreamReader(p.getInputStream()));
       Pattern pattern = Pattern.compile(".*Physical Addres.*: (.*)");

       while (true) {
            String line = inn.readLine();

        if (line == null)
            break;

        Matcher mm = pattern.matcher(line);
        if (mm.matches()) {
            System.out.println(mm.group(1));
        }
    }
   }
}

Sortie

02-00-4E-43-50-49
90-4C-E5-44-B9-8F
00-26-B9-9B-61-BF
00-00-00-00-00-00-00-E0
00-00-00-00-00-00-00-E0
00-00-00-00-00-00-00-E0
00-00-00-00-00-00-00-E0
00-00-00-00-00-00-00-E0

Cette méthode obsolète n'est pas vraiment efficace, car elle n'affiche pas l'adresse MAC utilisée actuellement, ce qu'elle a fait est simplement d'imprimer toutes les adresses MAC disponibles actuellement attachées. Cependant, c’est agréable de partager ici.