คัดลอกรหัสรหัส ดังต่อไปนี้:
แพ็คเกจ com.yswc.dao.sign;
นำเข้า java.io.BufferedReader;
นำเข้า java.io.InputStreamReader;
นำเข้า java.util.regex.Matcher;
นำเข้า java.util.regex.Pattern;
-
-
* รับที่อยู่ MAC
-
* @ผู้เขียน
-
*2011-12
-
-
GetMacAddress คลาสสาธารณะ {
callCmd สตริงคงที่สาธารณะ (สตริง [] cmd) {
ผลลัพธ์สตริง = "";
สายอักขระ = "";
พยายาม {
กระบวนการ proc = Runtime.getRuntime().exec(cmd);
InputStreamReader คือ = ใหม่ InputStreamReader(proc.getInputStream());
BufferedReader br = BufferedReader ใหม่ (คือ);
ในขณะที่ ((line = br.readLine ()) != null) {
ผลลัพธ์ += บรรทัด;
-
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
ส่งคืนผลลัพธ์;
-
-
-
-
-
* @param cmd
* คำสั่งแรก
-
* @param อื่น
* คำสั่งที่สอง
-
* @return ผลการดำเนินการของคำสั่งที่สอง
-
-
สาธารณะคง callCmd สตริง (สตริง [] cmd, สตริง [] อื่น) {
ผลลัพธ์สตริง = "";
สายอักขระ = "";
พยายาม {
รันไทม์ rt = Runtime.getRuntime();
กระบวนการ proc = rt.exec(cmd);
proc.waitFor(); // คำสั่งแรกได้ถูกดำเนินการแล้ว และคำสั่งที่สองได้ถูกดำเนินการแล้ว
proc = rt.exec (อื่น);
InputStreamReader คือ = ใหม่ InputStreamReader(proc.getInputStream());
BufferedReader br = BufferedReader ใหม่ (คือ);
ในขณะที่ ((line = br.readLine ()) != null) {
ผลลัพธ์ += บรรทัด;
-
} จับ (ข้อยกเว้นจ) {
e.printStackTrace();
-
ส่งคืนผลลัพธ์;
-
-
-
-
-
* @param ip
* IP เป้าหมาย โดยปกติจะอยู่ภายใน LAN
-
* @param sourceString
* สตริงผลลัพธ์ของการประมวลผลคำสั่ง
-
* @param macSeparator
* ตัวคั่น mac
-
* ที่อยู่ mac @return แสดงด้วยตัวคั่นด้านบน
-
-
ตัวกรองสตริงสาธารณะคงที่MacAddress (ip สตริงสุดท้าย, สตริงสุดท้าย sourceString, macSeparator สตริงสุดท้าย) {
ผลลัพธ์สตริง = "";
สตริง regExp = "((([0-9,AF,af]{1,2}" + macSeparator + "){1,5})[0-9,AF,af]{1,2})";
รูปแบบรูปแบบ = Pattern.compile (regExp);
Matcher matcher = pattern.matcher(sourceString);
ในขณะที่(matcher.find()){
ผลลัพธ์ = matcher.group(1);
ถ้า (sourceString.indexOf (ip) <= sourceString.lastIndexOf (matcher.group (1))) {
ทำลาย; // หากมี IP หลายรายการ ระบบจะจับคู่เฉพาะ Mac ที่ตรงกับ IP นี้
-
-
ส่งคืนผลลัพธ์;
-
-
-
-
-
* @param ip
* ไอพีเป้าหมาย
-
* @return ที่อยู่ Mac
-
-
-
-
สาธารณะสตริงคงที่ getMacInWindows (ip สตริงสุดท้าย) {
ผลลัพธ์สตริง = "";
สตริง[] cmd = {"cmd","/c","ping " + ip};
สตริง[] อื่น = {"cmd","/c", "arp -a"};
สตริง cmdResult = callCmd(cmd อื่น);
ผลลัพธ์ = filterMacAddress(ip,cmdResult,"-");
ส่งคืนผลลัพธ์;
-
-
-
* @param ip
* ไอพีเป้าหมาย
* @return ที่อยู่ Mac
-
-
สาธารณะสตริงคงที่ getMacInLinux (ip สตริงสุดท้าย) {
ผลลัพธ์สตริง = "";
สตริง[] cmd = {"/bin/sh", "-c", "ping" + ip + " -c 2 && arp -a" };
สตริง cmdResult = callCmd(cmd);
ผลลัพธ์ = filterMacAddress(ip,cmdResult,″);
ส่งคืนผลลัพธ์;
-
-
* รับที่อยู่ MAC
-
* @return คืนที่อยู่ MAC
-
สาธารณะสตริงคงที่ getMacAddress (สตริง ip) {
สตริง macAddress = "";
macAddress = getMacInWindows(ip).trim();
ถ้า(macAddress==null||"".เท่ากับ(macAddress)){
macAddress = getMacInLinux(ip).trim();
-
กลับ macAddress;
-
โมฆะคงที่สาธารณะ main (String [] args) {
สตริง mac=getMacAddress("192.168.1.102");
System.out.println("mac:"+mac);
-
-