ฉันมองหาวิธีที่จะรับที่อยู่ MAC ออนไลน์และพบสองวิธีที่แตกต่างกัน
ประเภทแรก
โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {inetaddress ia = inetaddress.getLocalhost (); system.out.println (getMacaddress (ia));} สตริงคงที่ส่วนตัว getMacaddress (InetAddress ia) โยนข้อยกเว้น {// รับวัตถุอินเตอร์เฟสเครือข่าย (เช่นการ์ดเครือข่าย) และรับที่อยู่ MAC ซึ่งมีอยู่ในอาร์เรย์ไบต์ Byte [] Mac = NetworkInterface.getByInetAddress (IA) .getHardWareaddress (); // รหัสต่อไปนี้คือการรวบรวมที่อยู่ MAC ลงใน StringStringBuffer SB = new Stringbuffer () สำหรับ (int i = 0; ในการแปลงไบต์เป็นสตริงจำนวนเต็มบวก s = integer.tohexstring (mac [i] & 0xff); sb.append (s.length () == 1? 0 + s: s);} // เปลี่ยนตัวพิมพ์เล็กทั้งหมดของสตริงเป็น uppercase และกลายเป็นที่อยู่ Mac ปกติวิธีนี้ดูเหมือนจะสามารถรับที่อยู่ MAC ของเครื่องเท่านั้น
ประเภทที่สอง
โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น {getMac ("192.168.1.186");} สตริงคงที่สาธารณะ getMac (string ip) {string str = null; string mac = null; ลอง {process p = runtime.getRuntime (). exec ("nbtstat -a" + ip); inputStreamReader ir = new InputStreamReader (P.GetInputStream (), "GBK"); LinenumberReader input = new LinenumberReader (IR); สำหรับ (; true;) {str = input.readline (); if (str! = null) {ถ้า (str.indexof ("ที่อยู่ MAC")> 1) {mac = str.substring (str.indexof ("ที่อยู่ MAC") + 9); break; }}} system.out.println (mac);} catch (ioexception e) {e.printstacktrace ();} return mac;}ฉันชอบวิธีนี้ แต่วิธีนี้อาจมีประสิทธิภาพน้อยลงเล็กน้อย มีจุดที่ต้องให้ความสนใจในเรื่องนี้ อย่าลืมเปลี่ยนรูปแบบการสตรีมข้อมูลเป็นรูปแบบ GBK มิฉะนั้นข้อมูลการอ่านจะอ่านไม่ออกและจะไม่สามารถดำเนินการต่อได้ในภายหลัง จากนั้นระบุเขตข้อมูล บางคนอาจเป็น "ที่อยู่ MAC" ดังนั้นคุณอาจต้องทำการปรับเปลี่ยนด้วยตัวเอง
ข้างต้นเป็นทั้งสองวิธี (แนะนำ) เพื่อให้ได้ที่อยู่ MAC ใน Java ที่นำเสนอโดยบรรณาธิการ ฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น ~