java通过ip获取客户端Mac地址的小例子

新河新大哥

新河新大哥

2016-02-19 10:58

下面请跟着图老师小编一起来了解下java通过ip获取客户端Mac地址的小例子,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

代码如下:

package com.yswc.dao.sign;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

import java.io.BufferedReader;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

import java.io.InputStreamReader;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**
 *
 * 获取MAC地址
 *
 * @author
 *
 * 2011-12
 *
 */

public class GetMacAddress {

public static String callCmd(String[] cmd) {
  String result = "";
  String line = "";
    try {
        Process proc = Runtime.getRuntime().exec(cmd);
        InputStreamReader is = new InputStreamReader(proc.getInputStream());
        BufferedReader br = new BufferedReader (is);
        while ((line = br.readLine ()) != null) {
             result += line;
        }
   }catch(Exception e) {
        e.printStackTrace();
   }
      return result;
}
/**
 *
 *
 *
 * @param cmd
 *            第一个命令
 *
 * @param another
 *            第二个命令
 *
 * @return 第二个命令的执行结果
 *
 */

public static String callCmd(String[] cmd,String[] another) {
   String result = "";
   String line = "";
   try {
      Runtime rt = Runtime.getRuntime();
      Process proc = rt.exec(cmd);
      proc.waitFor(); // 已经执行完第一个命令,准备执行第二个命令
      proc = rt.exec(another);
      InputStreamReader is = new InputStreamReader(proc.getInputStream());
      BufferedReader br = new BufferedReader (is);
      while ((line = br.readLine ()) != null) {
         result += line;
      }
   }catch(Exception e) {
        e.printStackTrace();
   }
      return result;
}

/**
 *
 *
 *
 * @param ip
 *            目标ip,一般在局域网内
 *
 * @param sourceString
 *            命令处理的结果字符串
 *
 * @param macSeparator
 *            mac分隔符号
 *
 * @return mac地址,用上面的分隔符号表示
 *
 */

public static String filterMacAddress(final String ip, final String sourceString,final String macSeparator) {
   String result = "";
   String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})";
   Pattern pattern = Pattern.compile(regExp);
   Matcher matcher = pattern.matcher(sourceString);
   while(matcher.find()){
     result = matcher.group(1);
     if(sourceString.indexOf(ip) = sourceString.lastIndexOf(matcher.group(1))) {
        break; // 如果有多个IP,只匹配本IP对应的Mac.
     }
   }
    return result;
}

/**
 *
 *
 *
 * @param ip
 *            目标ip
 *
 * @return Mac Address
 *
 *
 *
 */

public static String getMacInWindows(final String ip){
   String result = "";
   String[] cmd = {"cmd","/c","ping " + ip};
   String[] another = {"cmd","/c","arp -a"};
   String cmdResult = callCmd(cmd,another);
   result = filterMacAddress(ip,cmdResult,"-");
   return result;
}
 /**
  *
  * @param ip
  *            目标ip
  * @return Mac Address
  *
  */
 public static String getMacInLinux(final String ip){ 
     String result = ""; 
     String[] cmd = {"/bin/sh","-c","ping " +  ip + " -c 2 && arp -a" }; 
     String cmdResult = callCmd(cmd); 
     result = filterMacAddress(ip,cmdResult,":"); 
     return result; 
 } 

 /**
  * 获取MAC地址
  *
  * @return 返回MAC地址
  */
 public static String getMacAddress(String ip){
     String macAddress = "";
     macAddress = getMacInWindows(ip).trim();
     if(macAddress==null||"".equals(macAddress)){
         macAddress = getMacInLinux(ip).trim();
     }
     return macAddress;
 }
 public static void main(String[] args) {
 String mac=getMacAddress("192.168.1.102");
 System.out.println("mac:"+mac);
}

}

展开更多 50%)
分享

猜你喜欢

java通过ip获取客户端Mac地址的小例子

编程语言 网络编程
java通过ip获取客户端Mac地址的小例子

ASP获取客户端MAC地址

ASP
ASP获取客户端MAC地址

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

4.12 ASP如何获取客户端真实IP地址

Web开发
4.12 ASP如何获取客户端真实IP地址

在ASP中获取客户端MAC地址的方法

Web开发
在ASP中获取客户端MAC地址的方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

利用JS获取IE客户端IP及MAC的实现

Web开发
利用JS获取IE客户端IP及MAC的实现

ASP如何获取客户端真实IP

Web开发
ASP如何获取客户端真实IP

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

一个iOS上的秒表小应用的实现方法分享

一个iOS上的秒表小应用的实现方法分享

android 开发教程之日历项目实践(二)

android 开发教程之日历项目实践(二)
下拉加载更多内容 ↓