Získavanie MAC adries v Jave

1. Úvod

V tomto tutoriále použijeme Java na získanie MAC adries miestneho počítača.

Adresa MAC je jedinečný identifikátor fyzickej karty sieťového rozhrania.

Budeme sa venovať iba MAC adresám, ale všeobecnejší prehľad sieťových rozhraní nájdete v časti Práca so sieťovými rozhraniami v Jave.

2. Príklady

V našich príkladoch nižšie využijeme java.net.NetworkInterface a java.net.InetAddress API.

2.1. Stroj Localhost

Najskôr získajme MAC adresu localhost nášho stroja:

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

Ako NetworkInterface#getHardwareAddress vráti pole bajtov, môžeme formátovať výsledok:

Reťazec [] hexadecimálny = nový Reťazec [hardwareAddress.length]; for (int i = 0; i <hardwareAddress.length; i ++) {hexadecimálny [i] = String.format ("% 02X", hardwareAddress [i]); } String macAddress = String.join ("-", hexadecimálne);

Všimnite si, ako sme naformátujte každý bajt v poli na hexadecimálne číslo pomocou Formát reťazca #.

Potom môžeme všetky naformátované prvky spojiť pomocou „-“ (pomlčka).

2.2. Lokálna IP

Po druhé, získajme MAC adresu pre danú lokálnu IP adresu:

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

Opäť si všimnite, ako získame pole bajtov pre adresu MAC.

2.3. Všetky sieťové rozhrania

Na záver si dajme MAC adresy všetkých sieťových rozhraní na našom stroji:

Výpočet networkInterfaces = NetworkInterface.getNetworkInterfaces (); while (networkInterfaces.hasMoreElements ()) {NetworkInterface ni = networkInterfaces.nextElement (); byte [] hardwareAddress = ni.getHardwareAddress (); if (hardwareAddress! = null) {String [] hexadecimalFormat = new String [hardwareAddress.length]; for (int i = 0; i <hardwareAddress.length; i ++) {hexadecimalFormat [i] = String.format ("% 02X", hardwareAddress [i]); } System.out.println (String.join ("-", hexadecimálny formulár)); }}

Ako getNetworkInterfaces vracia fyzické aj virtuálne rozhrania, musíme filtrovať tie virtuálne.

Môžeme to urobiť napríklad vykonaním nulovej kontroly getHardwareAddress.

3. Záver

V tomto rýchlom výučbe sme preskúmali rôzne spôsoby získavania adries MAC pre miestny počítač.

Ako obvykle, všetky zdrojové kódy s príkladmi v tomto tutoriále nájdete na GitHub.


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