日期:2014-05-18  浏览次数:20901 次

applet如何取客户机mac地址
急......
系统登录需要得到客户端的mac地址,验证满足条件的mac时才可登录。

现在如何取客户端mac地址?
1js能实现,但是提示安装acticex插件,不友好。
2通过jnt 调用c来取,未能实现。
3通过applet取,未实现。

请教各位大虾,2或3如何实现?能给出提示或实现实例?
高分相赠!!!


------解决方案--------------------
可参考:address="127.0.0.1"(客户端本机IP)下面方法是获取MAC方法,你可以把它加入java类中
public String getMAC() {
String tmpStr = "";
String tmpMAC = "";
try {
Process process = Runtime.getRuntime().exec("nbtstat -a " + address);
InputStreamReader isReader = new InputStreamReader(process.getInputStream());
LineNumberReader lnReader = new LineNumberReader(isReader);
for (int i = 1; i < 100; i++) {
tmpStr = lnReader.readLine();
if (tmpStr != null) {
if (tmpStr.indexOf("MAC Address") > 1) {
tmpMAC = tmpStr.substring(tmpStr.indexOf("MAC Address") + 14,
tmpStr.length());
break;
}
}
}
} catch (IOException ex) {
return null;
}
if (tmpMAC.length() < 17) {
return null;
}
mac = tmpMAC.substring(0, 2) + ":" + tmpMAC.substring(3, 5)
+ ":" + tmpMAC.substring(6, 8) + ":" + tmpMAC.substring(9, 11)
+ ":" + tmpMAC.substring(12, 14) + ":"
+ tmpMAC.substring(15, 17);
return mac;
}

------解决方案--------------------
Java code
import java.io.*;

public class Cmdoutput{

    public static void main(String[] args){
        
        try{
            Process process = Runtime.getRuntime().exec ("ipconfig /all");   
            InputStreamReader ir=new InputStreamReader(process.getInputStream());   
            LineNumberReader input = new LineNumberReader (ir);   
            String line;   
            while ((line = input.readLine ()) != null)   
                if( line.indexOf("Physical Address")>0 ) {
                    String MACAddr = line.substring(line.indexOf("-")-2);
                    System.out.println("MAC address = ["+ MACAddr + "]");
                }   
        }catch (java.io.IOException e){
            System.err.println ("IOException " + e.getMessage());   
        }
    }
    
}

------解决方案--------------------
具体怎么得到上面已经说过了,我要说明的是applet默认是不允许访问客户端任何资源的,
当然如果客户没有安装jvm,applet是不可以用的。你有两种方法可以访问客户端MAC地址:
1、修改客户端的安全文件内容。
即:jre目录下的lib\security\java.policy文件,在grant {}中添加permission java.security.AllPermission;
修改完成后,看起来像下面的样子:
grant {
....
permission java.security.AllPermission;
....
}
2.你需要使用applet数字签名
------解决方案--------------------
up,想知道