קבלת כתובות MAC בג'אווה

1. הקדמה

במדריך זה נשתמש ב- Java כדי לקבל את כתובות ה- MAC של מכונה מקומית.

כתובת MAC היא המזהה הייחודי לכרטיס ממשק רשת פיזי.

אנו נכסה כתובות MAC בלבד, אך לקבלת סקירה כללית יותר של ממשקי רשת, עיין בעבודה עם ממשקי רשת ב- Java.

2. דוגמאות

בדוגמאות שלנו למטה נשתמש ב- java.net.NetworkInterface ו java.net.InetAddress ממשקי API.

2.1. מכונה מקומית

ראשית, בואו נקבל את כתובת ה- MAC עבור ה- localhost של המכונה שלנו:

InetAddress localHost = InetAddress.getLocalHost (); NetworkInterface ni = NetworkInterface.getByInetAddress (localHost); בתים [] hardwareAddress = ni.getHardwareAddress (); 

כפי ש ממשק רשת#getHardwareAddress מחזירה מערך בתים, אנחנו יכולים לעצב את התוצאה:

מחרוזת [] הקסדצימלי = מחרוזת חדשה [hardwareAddress.length]; עבור (int i = 0; i <hardwareAddress.length; i ++) {hexadecimal [i] = String.format ("% 02X", hardwareAddress [i]); } מחרוזת macAddress = String.join ("-", הקסדצימלי);

שימו לב איך אנחנו פורמט כל בייט במערך למספר הקסדצימלי באמצעות פורמט # מחרוזת.

לאחר מכן, אנו יכולים להצטרף לכל האלמנטים המעוצבים באמצעות "-" (מקף).

2.2. IP מקומי

שנית, בואו נקבל את כתובת ה- MAC עבור כתובת IP מקומית נתונה:

InetAddress localIP = InetAddress.getByName ("192.168.1.108"); NetworkInterface ni = NetworkInterface.getByInetAddress (localIP); בתים [] macAddress = ni.getHardwareAddress ();

שוב, שים לב כיצד אנו מקבלים מערך בתים עבור כתובת ה- MAC.

2.3. כל ממשקי הרשת

לבסוף, בואו נקבל את כתובות ה- MAC עבור כל ממשקי הרשת במחשב שלנו:

Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces (); בעוד (networkInterfaces.hasMoreElements ()) {NetworkInterface ni = networkInterfaces.nextElement (); בתים [] hardwareAddress = ni.getHardwareAddress (); אם (hardwareAddress! = null) {String [] hexadecimalFormat = new String [hardwareAddress.length]; עבור (int i = 0; i <hardwareAddress.length; i ++) {hexadecimalFormat [i] = String.format ("% 02X", hardwareAddress [i]); } System.out.println (String.join ("-", hexadecimalFormat)); }}

כפי ש getNetworkInterfaces מחזירה ממשקים פיזיים ווירטואליים, עלינו לסנן את הממשקים הווירטואליים.

אנו יכולים לעשות זאת למשל על ידי ביצוע בדיקת null getHardwareAddress.

3. מסקנה

במדריך מהיר זה בחנו דרכים שונות להשגת כתובות MAC עבור מכונה מקומית.

כרגיל, את כל קוד המקור עם הדוגמאות במדריך זה ניתן למצוא ב- GitHub.


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