MAC-adressen verkrijgen in Java

1. Inleiding

In deze tutorial gebruiken we Java om de MAC-adressen van een lokale computer op te halen.

Een MAC-adres is de unieke identificatie voor een fysieke netwerkinterfacekaart.

We behandelen alleen MAC-adressen, maar voor een meer algemeen overzicht van netwerkinterfaces raadpleegt u Werken met netwerkinterfaces in Java.

2. Voorbeelden

In onze onderstaande voorbeelden maken we gebruik van de java.net.NetworkInterface en java.net.InetAddress API's.

2.1. Machine Localhost

Laten we eerst het MAC-adres voor de localhost van onze machine ophalen:

InetAddress localHost = InetAddress.getLocalHost (); NetworkInterface ni = NetworkInterface.getByInetAddress (localHost); byte [] hardwareAddress = ni.getHardwareAddress (); 

Net zo Netwerkinterface#getHardwareAddress geeft een reeks bytes terug, we kunnen het resultaat opmaken:

String [] hexadecimaal = nieuwe String [hardwareAddress.length]; for (int i = 0; i <hardwareAddress.length; i ++) {hexadecimaal [i] = String.format ("% 02X", hardwareAddress [i]); } String macAddress = String.join ("-", hexadecimaal);

Merk op hoe we formatteer elke byte in de array naar een hexadecimaal getal met Tekenreeks # formaat.

Daarna kunnen we alle opgemaakte elementen samenvoegen met een "-" (streepje).

2.2. Lokaal IP

Ten tweede, laten we het MAC-adres voor een bepaald lokaal IP-adres ophalen:

InetAddress localIP = InetAddress.getByName ("192.168.1.108"); NetworkInterface ni = NetworkInterface.getByInetAddress (localIP); byte [] macAddress = ni.getHardwareAddress ();

Let nogmaals op hoe we een reeks bytes voor het MAC-adres krijgen.

2.3. Alle netwerkinterfaces

Laten we tot slot de MAC-adressen voor alle netwerkinterfaces op onze computer ophalen:

Opsomming networkInterfaces = NetworkInterface.getNetworkInterfaces (); while (networkInterfaces.hasMoreElements ()) {NetworkInterface ni = networkInterfaces.nextElement (); byte [] hardwareAddress = ni.getHardwareAddress (); if (hardwareAddress! = null) {String [] hexadecimalFormat = nieuwe String [hardwareAddress.length]; for (int i = 0; i <hardwareAddress.length; i ++) {hexadecimalFormat [i] = String.format ("% 02X", hardwareAddress [i]); } System.out.println (String.join ("-", hexadecimalFormat)); }}

Net zo getNetworkInterfaces retourneert zowel fysieke als virtuele interfaces, we moeten de virtuele eruit filteren.

We kunnen dit bijvoorbeeld doen door een nulcontrole uit te voeren getHardwareAddress.

3. Conclusie

In deze korte tutorial hebben we verschillende manieren onderzocht om MAC-adressen voor een lokale computer te krijgen.

Zoals gewoonlijk is alle broncode met de voorbeelden in deze tutorial te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found