javaWeb开发,如何取得客户端的MAC,注意,客户端是子网的一个PC
导读:本文共2022.5字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210... ...
目录
(为您整理了一些要点),点击可以直达。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.net.InetAddress;importjava.net.NetworkInterface;/*与系统相关的一些常用工具方法.*@authorlvbogun@version1.0.0/publicclassSystemTool{/获取当前操作系统名称.return操作系统名称例如:windowsxp,linux等.*/publicstaticStringgetOSName(){returnSystem.getProperty("os.name").toLowerCase();}/获取unix网卡的mac地址.非windows的系统默认调用本方法获取.如果有特殊系统请继续扩充新的取mac地址方法.@returnmac地址*/publicstaticStringgetUnixMACAddress(){Stringmac=null;BufferedReaderbufferedReader=null;Processprocess=null;try{//linux下的命令,一般取eth0作为本地主网卡process=Runtime.getRuntime().exec("ifconfigeth0");//显示信息中包含有mac地址信息bufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream()));Stringline=null;intindex=-1;while((line=bufferedReader.readLine())!=null){//寻找标示字符串[hwaddr]index=line.toLowerCase().indexOf("hwaddr");if(index>=0){//找到了//取出mac地址并去除2边空格mac=line.substring(index+"hwaddr".length()+1).trim();break;}}}catch(IOExceptione){e.printStackTrace();}finally{try{if(bufferedReader!=null){bufferedReader.close();}}catch(IOExceptione1){e1.printStackTrace();}bufferedReader=null;process=null;}returnmac;}/获取widnows网卡的mac地址.@returnmac地址/publicstaticStringgetWindowsMACAddress(){Stringmac=null;BufferedReaderbufferedReader=null;Processprocess=null;try{//windows下的命令,显示信息中包含有mac地址信息process=Runtime.getRuntime().exec("ipconfig/all");bufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream()));Stringline=null;intindex=-1;while((line=bufferedReader.readLine())!=null){System.out.println(line);//寻找标示字符串[physicalindex=line.toLowerCase().indexOf("physicaladdress");if(index>=0){//找到了index=line.indexOf(":");//寻找":"的位置if(index>=0){System.out.println(mac);//取出mac地址并去除2边空格mac=line.substring(index+1).trim();}break;}}}catch(IOExceptione){e.printStackTrace();}finally{try{if(bufferedReader!=null){bufferedReader.close();}}catch(IOExceptione1){e1.printStackTrace();}bufferedReader=null;process=null;}returnmac;}/windows7专用获取MAC地址@return@throwsException*/publicstaticStringgetMACAddress()throwsException{//获取本地IP对象InetAddressia=InetAddress.getLocalHost();//获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。byte[]mac=NetworkInterface.getByInetAddress(ia).getHardwareAddress();//下面代码是把mac地址拼装成StringStringBuffersb=newStringBuffer();for(inti=0;i<mac.length;i++){if(i!=0){sb.append("-");}//mac[i]&0xFF是为了把byte转化为正整数Strings=Integer.toHexString(mac[i]&0xFF);sb.append(s.length()==1?0+s:s);}//把字符串所有小写字母改为大写成为正规的mac地址并返回returnsb.toString().toUpperCase();}}写一个全局拦截的servlet,只要有请求的时候就调用这个类里面的获取mac地址的方法1234567891011121314Stringos=getOSName();System.out.println(os);if(os.equals("windows7")){Stringmac=getMACAddress();System.out.println(mac);}elseif(os.startsWith("windows")){//本地是windowsStringmac=getWindowsMACAddress();System.out.println(mac);}else{//本地是非windows系统一般就是unixStringmac=getUnixMACAddress();System.out.println(mac);}记得判断一下是什么系统
javaWeb开发,如何取得客户端的MAC,注意,客户端是子网的一个PC的详细内容,希望对您有所帮助,信息来源于网络。