`
alex09
  • 浏览: 969325 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java 取MAC地址

阅读更多
我们经常要取得一些和机器硬件相关的信息来进行一些特殊授权的操作,如文件加密等,这时,针对网卡地址的处理是一种不错的选择,因为硬件厂商已经将网卡的编号固化到了网卡上,而这个编号是全球唯一的,绝对不会重复。

如何取得MAC Address,SUN没有提供官方的直接实现,这就要我们自己动脑了。你可以借助jni和C等第三方手段来间接获取,这里提供另外一种方法,也能满足需求,代码如下:
package com.pure.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MacAddress {
	private static final String[] windowsCommand = { "ipconfig", "/all" };
	private static final String[] linuxCommand = { "/sbin/ifconfig", "-a" };
	private static final Pattern macPattern = Pattern
			.compile(".*((:?[0-9a-f]{2}[-:]){5}[0-9a-f]{2}).*",
					Pattern.CASE_INSENSITIVE);

	private final static List getMacAddressList() throws IOException {
		final ArrayList macAddressList = new ArrayList();

		final String os = System.getProperty("os.name");

		final String[] command;
		if (os.startsWith("Windows")) {
			command = windowsCommand;
		} else if (os.startsWith("Linux")) {
			command = linuxCommand;
		} else {
			throw new IOException("Unknown operating system: " + os);
		}

		final Process process = Runtime.getRuntime().exec(command);
		// Discard the stderr
		new Thread() {
			public void run() {
				try {
					InputStream errorStream = process.getErrorStream();
					while (errorStream.read() != -1) {
					}
					errorStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}.start();

		// Extract the MAC addresses from stdout
		BufferedReader reader = new BufferedReader(new InputStreamReader(
				process.getInputStream()));
		for (String line = null; (line = reader.readLine()) != null;) {
			Matcher matcher = macPattern.matcher(line);
			if (matcher.matches()) {
				// macAddressList.add(matcher.group(1));
				macAddressList.add(matcher.group(1).replaceAll("[-:]", ""));
			}
		}
		reader.close();
		return macAddressList;
	}

	public static String getMacAddress() {
		try {
			List addressList = getMacAddressList();
			StringBuffer sb = new StringBuffer();
			for (Iterator iter = addressList.iterator(); iter.hasNext();) {
				sb.append("\n").append(iter.next());
			}
			return sb.toString();
		} catch (IOException e) {
			return null;
		}
	}
	public final static void main(String[] args) {
		try {
			System.out.println(" MAC Address: " + getMacAddress());
		} catch (Throwable t) {
			t.printStackTrace();
		}
	}
}
分享到:
评论

相关推荐

    使用JAVA获取客户端MAC地址.doc

    使用JAVA获取客户端MAC地址 //Java获得CPU序列号和网卡Mac地址 /* 利用Runtime call操作系统的命令,具体的命令取决于不同的操作系统,注意不要调用Runtime.getRuntime().exec(String)接口,要用Runtime.getRuntime...

    java拿取本机正在使用的ip及本机mac地址

    拿到本机正在使用网络的ip排除虚机的ip地址,mac ipv4 ipv6 工作组等清册有效有需要的可以下载试试-.-

    去显卡MAC地址

    去显卡MAC地址 可以取到显卡的MAC地址,唯一的地址。

    MAC加密算法(银联标准)

    将异或运算后的最后8个字节(RESULT BLOCK)转换成16个HEXDECIMAL,取前8个字节用mkey1,DES加密,将加密后的结果与后8 个字节异或,用异或的结果TEMP BLOCK 再进行一次单倍长密钥算法运算,将运算后的结果(ENC BLOCK2...

    Sip取色工具

    mac ox 系统下的取色工具,适用为andorid,css,ios,java,.net等语言取色。

    javaweb基于ssm框架快递代拿管理系统设计与实现(项目源码)

    开发语言:Java 后台框架:SSM 前端:layui 数据库:MySql5.7 Navicat 开发环境:Intellij Idea 浏览器:Chrome或360浏览器 本系统实现了 前端可以对快递代拿信息填写、查询快递单号以及意见反馈 后端管理可...

    pty4j:Pty for Java

    虽然JPty非常好并且仅使用JNA编写,但是当Java处于调试状态时( 在Mac OS X上挂起了死机,因为fork在Java的elt可以正常工作,但主要是本机代码(使用JNI)。 因此,这是其他两者的结合:用JPty制作的风格的JNA端口...

    Java项目:药品管理系统(java+SpringBoot+html+layui+bootstrap+echarts+mysql

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1...

    基于java的局域网聊天系统-毕业设计.doc

    编程语言:java 硬件平台 CPU:Pentium4以上 内存:128M以上 软件平台 操作系统:windows系列,mac系列,linux等 开发工具: Eclipse,JDK6 描述: (1)实现群聊和私聊; (2)实现文件的发送与接收; (3)实现截图功能...

    java采购管理系统源码-Message-Bus:消息总线

    这可能需要几分钟时间,具体取决于您的互联网速度。 搭建服务器 如果在 Unix/Linux 中: $ cd hornetq $ ./build.sh bin-distro 如果在 OSX 中: $ cd hornetq $ ./mac-build.sh bin-distro 服务器构建位于 hornetq/...

    Mac OS X Snow Leopard 10A432雪豹 BT种子

    选中左面大于20+GB的硬盘空间分区,在右边选择“抹掉”,格式选择“Mac OS扩展 (日志式)”,然后在下面写上jack mac os x(名字可随意取),点击右下角的“抹掉”。 抹掉操作完成后直接关闭“磁盘工具”。(抹掉...

    G2Dj:使用Java和OpenGL的跨平台游戏引擎

    Java和OpenGLES中的跨平台游戏引擎。 专为2D,低保真图形而设计,但能够为“ 2.5D”项目提供3D透视图渲染。 适用于Mac / Linux / Windows和Android。 游戏是针对实体组件系统进行编程的,游戏所使用的组件取决于一...

    JPasswords:Java密码管理工具-开源

    用户友好且精通的Java程序,用于将... 紧凑的跨平台程序,带有PORTABLE方式,非常适合USB记忆棒,Linux,Mac等。需要Java JRE 1.8或更高版本PWSLIB3项目提供密码安全数据库库。 如有许可/使用问题,请访问Wiki页面!

    java画笔源码-pcgen:pcgen程序发布的主要代码和数据开发

    确切的调用取决于您的操作系统,但您应该能够双击以启动适用于您平台的文件。 Windows: pcgen.exe (命令行用户为pcgen.bat ) Linux: pcgen.sh Mac: pcgen.jar (或pcgen.dmg如果存在) 从 6.09 版 (Alpha) 开始...

    注册码保护软件例子源程序

    呵呵,这是来自网上的,可能适合初学者学习用。不过只有注册码例子源程序,取cup序列号、mac地址的没有源码。

    slsqp4j:流行的SLSQP优化器的JVM包装器

    构建Slsqp4j取决于gcc和gfortran。 的Ubuntu 您可以使用sudo apt install gcc gfortran命令安装两者。 此外,您的JAVA_HOME必须指向您的JDK安装目录。 要构建Slsqp4j,只需在项目根目录中运行gradle clean build ...

    Mac环境下配置tomcat的步骤详解

    Tomcat无法取访问Appache资源)。Appache只支持静态网页,但像asp,php,cgi,jsp等动态就需要Tomcat来处理。下面我们就来看看详细的步骤。 一、 下载 登录Apache Tomcat官网,地址 http://tomcat.apache.org ,点击左边...

    基于springboot社区医院信息平台毕业设计(源码+论文).rar

    ① 系统环境:Windows/Mac ② 开发语言:Java ③ 框架:SpringBoot ④ 架构:B/S、MVC ⑤ 开发环境:IDEA、JDK、Maven、Mysql ⑥ JDK版本:JDK1.8 ⑦ Maven包:Maven3.6 ⑧ 数据库:mysql 5.7 ⑨ 服务平台:Tomcat 8.0/...

Global site tag (gtag.js) - Google Analytics