`

Java获取本机MAC地址和IP

    博客分类:
  • Java
 
阅读更多
Java中获取windows、Linux和windows7的MAC地址 http://yuelangyc.iteye.com/blog/1069713
多网卡是存在问题,比如会找到Virsualbox的网卡。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;

/**
 * 与系统相关的一些常用工具方法.
 * 
 * @author lvbogun
 * @version 1.0.0
 */
public class SystemTool {

	/**
	 * 获取当前操作系统名称. return 操作系统名称 例如:windows xp,linux 等.
	 */
	public static String getOSName() {
		return System.getProperty("os.name").toLowerCase();
	}

	/**
	 * 获取unix网卡的mac地址. 非windows的系统默认调用本方法获取.
	 * 如果有特殊系统请继续扩充新的取mac地址方法.
	 * 
	 * @return mac地址
	 */
	public static String getUnixMACAddress() {
		String mac = null;
		BufferedReader bufferedReader = null;
		Process process = null;
		try {
			// linux下的命令,一般取eth0作为本地主网卡
			process = Runtime.getRuntime().exec("ifconfig eth0");
			// 显示信息中包含有mac地址信息
			bufferedReader = new BufferedReader(new InputStreamReader(
					process.getInputStream()));
			String line = null;
			int index = -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 (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (bufferedReader != null) {
					bufferedReader.close();
				}
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			bufferedReader = null;
			process = null;
		}
		return mac;
	}

	/**
	 * 获取widnows网卡的mac地址.
	 * 
	 * @return mac地址
	 */
	public static String getWindowsMACAddress() {
		String mac = null;
		BufferedReader bufferedReader = null;
		Process process = null;
		try {
			// windows下的命令,显示信息中包含有mac地址信息
			process = Runtime.getRuntime().exec("ipconfig /all");
			bufferedReader = new BufferedReader(new InputStreamReader(
					process.getInputStream()));
			String line = null;
			int index = -1;
			while ((line = bufferedReader.readLine()) != null) {
				System.out.println(line);
				// 寻找标示字符串[physical
				index = line.toLowerCase().indexOf("physical address");
				
				if (index >= 0) {// 找到了
					index = line.indexOf(":");// 寻找":"的位置
					if (index >= 0) {
						System.out.println(mac);
						// 取出mac地址并去除2边空格
						mac = line.substring(index + 1).trim();
					}
					break;
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (bufferedReader != null) {
					bufferedReader.close();
				}
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			bufferedReader = null;
			process = null;
		}

		return mac;
	}

	/**
	 * windows 7 专用 获取MAC地址
	 * 
	 * @return
	 * @throws Exception
	 */
	public static String getMACAddress() throws Exception {
		
		// 获取本地IP对象
		InetAddress ia = InetAddress.getLocalHost();
		// 获得网络接口对象(即网卡),并得到mac地址,mac地址存在于一个byte数组中。
		byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();

		// 下面代码是把mac地址拼装成String
		StringBuffer sb = new StringBuffer();

		for (int i = 0; i < mac.length; i++) {
			if (i != 0) {
				sb.append("-");
			}
			// mac[i] & 0xFF 是为了把byte转化为正整数
			String s = Integer.toHexString(mac[i] & 0xFF);
			sb.append(s.length() == 1 ? 0 + s : s);
		}

		// 把字符串所有小写字母改为大写成为正规的mac地址并返回
		return sb.toString().toUpperCase();
	}

	/**
	 * 测试用的main方法.
	 * 
	 * @param argc 运行参数.
	 * @throws Exception
	 */
	public static void main(String[] argc) throws Exception {
		String os = getOSName();
		System.out.println(os);
		if (os.equals("windows 7")) {
			String mac = getMACAddress();
			System.out.println(mac);
		} else if (os.startsWith("windows")) {
			// 本地是windows
			String mac = getWindowsMACAddress();
			System.out.println(mac);
		} else {
			// 本地是非windows系统 一般就是unix
			String mac = getUnixMACAddress();
			System.out.println(mac);
		}
	}
}


得到所有IP
这段代码会输出计算机中所有设备的ip,找需要的
http://kaza.iteye.com/blog/169889
Enumeration<NetworkInterface> netInterfaces = null;
try {
	netInterfaces = NetworkInterface.getNetworkInterfaces();
	while (netInterfaces.hasMoreElements()) {
		NetworkInterface ni = netInterfaces.nextElement();
		System.out.println("DisplayName:" + ni.getDisplayName());
		System.out.println("Name:" + ni.getName());
		Enumeration<InetAddress> ips = ni.getInetAddresses();
		while (ips.hasMoreElements()) {
			System.out.println("IP:"
			+ ips.nextElement().getHostAddress());
		}
	}
} catch (Exception e) {
	e.printStackTrace();
}



http://www.cnblogs.com/hxsyl/p/3422191.html
以下代码在多网卡出现问题
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
/*
 * 物理地址是48位,别和ipv6搞错了
 */
public class LOCALMAC {
	/**
	 * @param args
	 * @throws UnknownHostException 
	 * @throws SocketException 
	 */
	public static void main(String[] args) throws UnknownHostException, SocketException {
		// TODO Auto-generated method stub
		
		//得到IP,输出PC-201309011313/122.206.73.83
		InetAddress ia = InetAddress.getLocalHost();
		System.out.println(ia);
		getLocalMac(ia);
	}
	private static void getLocalMac(InetAddress ia) throws SocketException {
		// TODO Auto-generated method stub
		//获取网卡,获取地址
		byte[] mac = NetworkInterface.getByInetAddress(ia).getHardwareAddress();
		System.out.println("mac数组长度:"+mac.length);
		StringBuffer sb = new StringBuffer("");
		for(int i=0; i<mac.length; i++) {
			if(i!=0) {
				sb.append("-");
			}
			//字节转换为整数
			int temp = mac[i]&0xff;
			String str = Integer.toHexString(temp);
			System.out.println("每8位:"+str);
			if(str.length()==1) {
				sb.append("0"+str);
			}else {
				sb.append(str);
			}
		}
		System.out.println("本机MAC地址:"+sb.toString().toUpperCase());
	}
}
分享到:
评论

相关推荐

    Java获取本机MAC地址IP地址主机名

    Java获取本机MAC地址IP地址主机名

    java 获取客户端ip mac地址

    ### Java 获取客户端 IP 和 MAC 地址 在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端...

    java通过ip获取mac地址的工具

    java中通过ip获取远程客户端的mac地址,支持跨平台

    Java 自动获取本机IP、MAC地址

    Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...

    java中通过request获取IP以及MAC地址.java

    获取用户请求IP地址 根据IP地址获取mac地址

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    java获取客户端ip及mac地址

    ### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位...以上就是关于如何在 Java 中获取客户端 IP 地址及 MAC 地址的相关知识点介绍。

    Java 获取本机IP

    总的来说,Java获取本机IP地址和MAC地址涉及了对网络编程底层原理的理解,包括网络接口、IP地址类型以及MAC地址的概念。通过调用Java的网络API,我们可以实现跨平台的网络信息查询,但需要特别注意不同操作系统可能...

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...

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

    在Java编程环境中,获取本机的IP地址和MAC地址是一项常见的需求,特别是在网络通信和设备识别的场景下。本文将详细讲解如何通过Java代码来获取本机正在使用的IP地址(包括IPv4和IPv6)以及MAC地址,并排除虚拟机的IP...

    通过java获取远程机器mac地址

    在对网内主机进行监控时需要通过java获取远程机器的mac地址

    跨网段获取远程主机MAC地址的方法与java实现

    ### 跨网段获取远程主机MAC地址:方法与Java实现 #### 引言与背景 在计算机网络领域,MAC地址(Media Access Control Address)作为网卡的唯一标识,扮演着关键角色,尤其是在网络通信和安全监控中。然而,传统的...

    java通过ip获取mac地址源代码.rar

    在Java编程语言中,获取一个特定IP地址对应的MAC(Media Access Control)地址是一项常见的网络编程任务。MAC地址是网络设备在网络层的物理地址,用于标识网络接口控制器(NIC)。在局域网(LAN)中,MAC地址是唯一...

    java获取linux服务器上的IP操作

    在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux服务器上,网络接口是用来发送和接受数据包的基本设备...

    pb获取ip地址/mac地址

    这是一个PowerBuilder的库文件,可能包含了获取IP和MAC地址的相关代码和对象。在PowerBuilder中,开发者会将相关的用户界面(UI)、数据窗口(DataWindow)和其他对象打包到PBL库中,以便在多个工程中重用。 总的...

    java中获取客户端IP MAC信息

    可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!

    java得到机器的MAC,硬盘序列序列号和IP地址

    得到机器的MAC,硬盘序列序列号和IP地址 public static void main(String[] args) ...{ String osName = System.getProperty("os.name"); StringBuffer systemPathBuff = new StringBuffer(""); if (osName.index...

    如何使用Java代码获取Android移动终端Mac地址.zip

    - 如果你的应用可以使用C/C++代码,可以通过Android NDK调用Linux系统函数`ifconfig`或`ip link show`来获取Mac地址,但这需要处理更复杂的跨平台问题。 5. **使用SystemProperties获取** - 在系统服务层面,可以...

    Android_获取手机IP和MAC地址

    在Android平台上,开发一款应用程序以获取手机的IP和MAC地址是一项常见的需求,这通常涉及到网络编程和设备硬件信息的访问。下面将详细讲解如何在Android中实现这一功能。 首先,我们要理解IP地址和MAC地址的概念。...

Global site tag (gtag.js) - Google Analytics