انسخ رمز الكود كما يلي:
الحزمة com.yswc.dao.sign؛
import java.io.BufferedReader;
استيراد java.io.InputStreamReader؛
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* احصل على عنوان MAC
*
* @مؤلف
*
*2011-12
*
*/
الطبقة العامة GetMacAddress {
سلسلة ثابتة عامة callCmd(String[] cmd) {
نتيجة السلسلة = ""؛
سطر السلسلة = ""؛
يحاول {
عملية proc = Runtime.getRuntime().exec(cmd);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader (is)؛
بينما ((line = br.readLine ()) != null) {
النتيجة += السطر؛
}
}قبض (استثناء ه) {
printStackTrace();
}
نتيجة الإرجاع؛
}
/**
*
*
*
* @param كمد
*الأمر الأول
*
* @param آخر
* الأمر الثاني
*
* @return نتيجة تنفيذ الأمر الثاني
*
*/
سلسلة ثابتة عامة callCmd(String[] cmd,String[] آخر) {
نتيجة السلسلة = ""؛
سطر السلسلة = ""؛
يحاول {
Runtime rt = Runtime.getRuntime();
عملية بروك = rt.exec(cmd);
proc.waitFor(); // تم تنفيذ الأمر الأول وتم تنفيذ الأمر الثاني.
proc = rt.exec(another);
InputStreamReader is = new InputStreamReader(proc.getInputStream());
BufferedReader br = new BufferedReader (is)؛
بينما ((line = br.readLine ()) != null) {
النتيجة += السطر؛
}
}قبض (استثناء ه) {
printStackTrace();
}
نتيجة الإرجاع؛
}
/**
*
*
*
* @param الملكية الفكرية
* عنوان IP المستهدف، عادةً ما يكون داخل الشبكة المحلية (LAN).
*
* @param sourceString
* السلسلة الناتجة لمعالجة الأوامر
*
* @param macSeparator
* محدد ماك
*
* @return عنوان mac، ممثلاً بالمحدد أعلاه
*
*/
مرشح السلسلة الثابتة العامةMacAddress(final String ip, Final String sourceString,final String macSeparator) {
نتيجة السلسلة = ""؛
String 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 الملكية الفكرية
* الهدف الملكية الفكرية
*
* @return عنوان ماك
*
*
*
*/
سلسلة ثابتة عامة getMacInWindows (سلسلة نهائية ip) {
نتيجة السلسلة = ""؛
String[] cmd = {"cmd"،"/c"، "ping " + ip}؛
String[] آخر = {"cmd"،"/c"، arp -a"}؛
String cmdResult = callCmd(cmd,another);
result = filterMacAddress(ip,cmdResult,"-");
نتيجة الإرجاع؛
}
/**
*
* @param الملكية الفكرية
* الهدف الملكية الفكرية
* @return عنوان ماك
*
*/
سلسلة ثابتة عامة getMacInLinux(final String ip){
نتيجة السلسلة = ""؛
String[] cmd = {"/bin/sh"،"-c"، "ping " + ip + " -c 2 && arp -a" };
String cmdResult = callCmd(cmd);
result = filterMacAddress(ip,cmdResult,":":);
نتيجة الإرجاع؛
}
/**
* احصل على عنوان MAC
*
*return إرجاع عنوان MAC
*/
سلسلة ثابتة عامة getMacAddress(String ip){
String macAddress = "";
macAddress = getMacInWindows(ip).trim();
إذا(macAddress==null||"".equals(macAddress)){
macAddress = getMacInLinux(ip).trim();
}
إرجاع عنوان ماك؛
}
public static void main(String[] args) {
String mac=getMacAddress("192.168.1.102");
System.out.println("mac:"+mac);
}
}