MAC地址一般的PC用户是不会修改的(当然不排除一些高手了),想要直接获取也很简单,开始->运行->cmd->回车
->输入ipconfig /all->回车。输出窗口就会显示出本机的MAC地址
![](/attachment/201307/16/23135982_1373961716Gp7u.jpg)
![](/attachment/201307/16/23135982_1373961722WfwC.jpg)
但是为什么会有两张截图呢,因为有中英文显示的问题,用代码获取的话通常不能确定用户端是用什么编码显示。
下面是具体实现的代码
-
public static void main(String[] args)
-
{
-
// 网卡MAC地址
-
String physicalAddress=null;
-
try
-
{
-
Process process=Runtime.getRuntime().exec("cmd /c ipconfig /all");
-
BufferedReader bufferedReader=new BufferedReader(
-
new InputStreamReader(process.getInputStream()));
-
String line=null;
-
while((line=bufferedReader.readLine())!=null)
-
{
-
if(line.indexOf("Physical Address. . . . . . . . . :")!=-1)
-
{
-
if(line.indexOf(":")!=-1)
-
{
-
physicalAddress=line.substring(line.indexOf(":")+2);
-
break;
-
}
-
}
-
}
-
}
-
catch(IOException e)
-
{
-
e.printStackTrace();
-
}
-
System.out.println("MAC="+physicalAddress);
-
}
该方法获取到用户本地的MAC地址,但是由于不清楚用户输出窗口显示编码导致可能获取不到的情况,该如何解决呢
![](http://blog.chinaunix.net/kindeditor/plugins/emoticons/images/32.gif)
?方法就是获取时先设置好输出窗口的显示编码
-
Process process=Runtime.getRuntime().exec("cmd /c CHCP 437 | ipconfig /all");
因为程序中一般禁止直接使用中文做逻辑处理,所以
if判断中使用的是
"Physical Address. . . . . . . . . :" ,当设置编码后就可以获取想要的信息了。
CHCP功能:显示或设置活动代码页(即当前显示页)编号
代码页 描述
1258 越南语
1257 波罗的语
1256 阿拉伯语
1255 希伯来语
1254 土耳其语
1253 希腊语
1252 拉丁 1 字符 (ANSI)
1251 西里尔语
1250 中欧语言
950 繁体中文
949 朝鲜语
936 简体中文
932 日语
874 泰国语
850 多语种 (MS-DOS Latin1)
437 MS-DOS 美国英语
当然还有其他的DOS命令也可以如此执行,例如执行ping消息等。
阅读(599) | 评论(0) | 转发(0) |