首页 新闻 会员 周边 捐助

java代码如何获取用户客户端电脑的mac地址

0
悬赏园豆:20 [已解决问题] 解决于 2018-09-19 08:51

java代码如何获取用户客户端电脑的mac地址  我先在在修改 一个mac的代码 但是他这个代码功能是不能实现的 但是看得不是很明白  我把代码贴到下面 请大神们指点  或者 也可以让我借鉴一下你的代码  

/**
* 根据IP地址获取MAC地址
*/
public static String getMACAddress(String ipAddress) {
String str = "", strMAC = "", macAddress = "";
if(ipAddress.equals("本地")||ipAddress.equals("0:0:0:0:0:0:0:1")){
return macAddress="本地";
}
try {
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1||str.indexOf("MAC 地址") > 1) {
strMAC = str.substring(str.indexOf("MAC Address") + 14, str.length());
break;
}
}
}
} catch (IOException ex) {
return "Can't Get MAC Address!";
}
if (strMAC.length() < 17) {
return "Error!";
}
macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5) + ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11) + ":"
+ strMAC.substring(12, 14) + ":" + strMAC.substring(15, 17);
return macAddress;
}

KpGo的主页 KpGo | 初学一级 | 园豆:4
提问于:2018-08-29 16:45
< >
分享
最佳答案
0

因为代码是跑在服务器上,获取远程客户端mac地址
所以 网上大部分的 使用cmd。。。。的方法都是不可以的因为 那样始终是获取本机的mac地址 所以我才用的是 利用远程客户端137端口 Udp协议

KpGo | 初学一级 |园豆:4 | 2018-09-11 15:13
其他回答(3)
0

试下下面这个能实现吗:https://blog.csdn.net/baohuan_love/article/details/16339709

你风致 | 园豆:2215 (老鸟四级) | 2018-08-29 17:47
0
收获园豆:20
ycyzharry | 园豆:25683 (高人七级) | 2018-08-29 19:35

是这样的大佬  我这个是部署到 windows环境上的 但是他现在又要让我判断 客户端的环境是 L/W 的  还有就是 您让我看得那个  看得不是很明白 137端口是什么

 

支持(0) 反对(0) KpGo | 园豆:4 (初学一级) | 2018-08-30 09:16

@KpGo: 判断操作系统

System.getProperty ("os.name")

Java/JSP获得客户端网卡MAC地址的三种方法解析

支持(0) 反对(0) ycyzharry | 园豆:25683 (高人七级) | 2018-08-30 09:24

@ycyzharry: 您的这种方法 我也看了 但是他获取mac地址没有判断是什么操作系统啊  就算是 我自己加上判断条件 他的获取mac地址的操作都是一样的啊

支持(0) 反对(0) KpGo | 园豆:4 (初学一级) | 2018-08-30 11:13

@ycyzharry: 大佬 这个System.getProperty("os.name")这个方法 是获取服务器的系统名称 还是 客户端的系统名称啊 今天项目经理说我的不对 这是获取服务器的系统名称

支持(0) 反对(0) KpGo | 园豆:4 (初学一级) | 2018-08-31 11:41
0

//获取计算机MAC地址
@SuppressWarnings("finally")
private static String getLocalMac()
{
String result = "";
try {
InetAddress adress = InetAddress.getLocalHost();
NetworkInterface net = NetworkInterface.getByInetAddress(adress);
byte[] macBytes = net.getHardwareAddress();
result = transBytesToStr(macBytes);
} catch (UnknownHostException e) {
result = "";
e.printStackTrace();
} catch (SocketException e) {
result = "";
e.printStackTrace();
}
finally
{
return result;
}
}

    //将读取的计算机MAC地址字节转化为字符串
  private static String transBytesToStr(byte[] bytes)
  { 
       StringBuffer buffer = new StringBuffer(); 
       for(int i = 0; i < bytes.length; i++){ 
           if(i != 0) 
               buffer.append("-"); 
           //bytes[i]&0xff将有符号byte数值转换为32位有符号整数,其中高24位为0,低8位为byte[i] 
           int intMac = bytes[i]&0xff; 
           //toHexString函数将整数类型转换为无符号16进制数字 
           String str = Integer.toHexString(intMac); 
           if(str.length() == 0){ 
               buffer.append("00"); 
           } 
           else if (str.length() < 2)
           {
               buffer.append("0");
           }
           buffer.append(str); 
       } 
       return buffer.toString().toUpperCase(); 
   }
队长给我球。 | 园豆:324 (菜鸟二级) | 2018-09-04 11:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册