Copy kode kodenya sebagai berikut:
paket com.yswc.dao.sign;
impor java.io.BufferedReader;
impor java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*
* Dapatkan alamat MAC
*
* @pengarang
*
*2011-12
*
*/
GetMacAddress kelas publik {
String statis publik callCmd(String[] cmd) {
Hasil string = "";
Garis string = "";
mencoba {
Proses proc = Runtime.getRuntime().exec(cmd);
InputStreamReader adalah = InputStreamReader baru(proc.getInputStream());
BufferedReader br = BufferedReader baru (adalah);
while ((baris = br.readLine ()) != null) {
hasil += baris;
}
}menangkap(Pengecualian e) {
e.printStackTrace();
}
hasil pengembalian;
}
/**
*
*
*
* @param cmd
* perintah pertama
*
* @param yang lain
* Perintah kedua
*
* @return Hasil eksekusi perintah kedua
*
*/
string statis publik callCmd(String[] cmd,String[] lain) {
Hasil string = "";
Garis string = "";
mencoba {
Waktu proses rt = Waktu proses.getRuntime();
Proses proc = rt.exec(cmd);
proc.waitFor(); // Perintah pertama telah dijalankan dan perintah kedua telah dijalankan.
proc = rt.exec(yang lain);
InputStreamReader adalah = InputStreamReader baru(proc.getInputStream());
BufferedReader br = BufferedReader baru (adalah);
while ((baris = br.readLine ()) != null) {
hasil += baris;
}
}menangkap(Pengecualian e) {
e.printStackTrace();
}
hasil pengembalian;
}
/**
*
*
*
* @param ip
* Target IP, biasanya dalam LAN
*
* @param sourceString
* String hasil pemrosesan perintah
*
* @param macSeparator
* pembatas mac
*
* @return alamat mac, diwakili oleh pembatas di atas
*
*/
public static String filterMacAddress(final String ip, final String sourceString, final String macSeparator) {
Hasil string = "";
String regExp = "((([0-9,AF,af]{1,2}" + macSeparator + "){1,5})[0-9,AF,af]{1,2})";
Pola pola = Pattern.compile(regExp);
Pencocokan pencocokan = pattern.matcher(sourceString);
while(matcher.find()){
hasil = matcher.group(1);
if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) {
break; // Jika ada beberapa IP, hanya Mac yang sesuai dengan IP ini yang akan cocok.
}
}
hasil pengembalian;
}
/**
*
*
*
* @param ip
* alamat IP sasaran
*
* @mengembalikan Alamat Mac
*
*
*
*/
String statis publik getMacInWindows(IP String terakhir){
Hasil string = "";
String[] cmd = {"cmd","/c","ping " + ip};
String[] lain = {"cmd","/c","arp -a"};
String cmdHasil = callCmd(cmd,lainnya);
hasil = filterMacAddress(ip,cmdResult,"-");
hasil pengembalian;
}
/**
*
* @param ip
* alamat IP sasaran
* @mengembalikan Alamat Mac
*
*/
String statis publik getMacInLinux(String ip terakhir){
Hasil string = "";
String[] cmd = {"/bin/sh","-c","ping " + ip + " -c 2 && arp -a" };
String cmdHasil = callCmd(cmd);
hasil = filterMacAddress(ip,cmdResult,":");
hasil pengembalian;
}
/**
* Dapatkan alamat MAC
*
* @return Mengembalikan alamat MAC
*/
String statis publik getMacAddress(String ip){
String alamat mac = "";
macAddress = getMacInWindows(ip).trim();
if(macAddress==null||"".sama dengan(macAddress)){
macAddress = getMacInLinux(ip).trim();
}
kembalikan macAddress;
}
public static void main(String[] args) {
String mac=getMacAddress("192.168.1.102");
Sistem.keluar.println("mac:"+mac);
}
}