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;
}
因为代码是跑在服务器上,获取远程客户端mac地址
所以 网上大部分的 使用cmd。。。。的方法都是不可以的因为 那样始终是获取本机的mac地址 所以我才用的是 利用远程客户端137端口 Udp协议
试下下面这个能实现吗:https://blog.csdn.net/baohuan_love/article/details/16339709
是这样的大佬 我这个是部署到 windows环境上的 但是他现在又要让我判断 客户端的环境是 L/W 的 还有就是 您让我看得那个 看得不是很明白 137端口是什么
@ycyzharry: 您的这种方法 我也看了 但是他获取mac地址没有判断是什么操作系统啊 就算是 我自己加上判断条件 他的获取mac地址的操作都是一样的啊
@ycyzharry: 大佬 这个System.getProperty("os.name")这个方法 是获取服务器的系统名称 还是 客户端的系统名称啊 今天项目经理说我的不对 这是获取服务器的系统名称
@KpGo: 获取服务器的
客户端参考
java获取客服端信息的方法(系统,浏览器等)
java web 获取客户端操作系统信息
//获取计算机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();
}