`

java百分百获取到机器IP地址及MAC码

 
阅读更多

java百分百获取到机器IP地址及MAC码

已测系统:

windows linux unix

排除127.0.0.1 和 0.0.0.0.1等非正常IP

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
	
public class IpUtil {
	
	private IpUtil(){}
	/**
	 * 此方法描述的是:获得服务器的IP地址
	 * @author:  jdkleo
	 * @version: 2014年9月5日 下午4:57:15
	 */
	public static String getLocalIP() {
		String sIP = "";
		InetAddress ip = null;
		try {
			boolean bFindIP = false;
			Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface
					.getNetworkInterfaces();
			while (netInterfaces.hasMoreElements()) {
				if (bFindIP) {
					break;
				}
				NetworkInterface ni = (NetworkInterface) netInterfaces
						.nextElement();
				
				Enumeration<InetAddress> ips = ni.getInetAddresses();
				while (ips.hasMoreElements()) {
					ip = (InetAddress) ips.nextElement();
					if (!ip.isLoopbackAddress() 
							&& ip.getHostAddress().matches(
									"(\\d{1,3}\\.){3}\\d{1,3}")) {
						bFindIP = true;
						break;
					}
				}
			}
		} catch (Exception e) {
			OutUtil.error(IpUtil.class, e.getMessage());
		}
		if (null != ip) {
			sIP = ip.getHostAddress();
		}
		return sIP;
	}
	
	/**
	 * 此方法描述的是:获得服务器的IP地址(多网卡)
	 * @author:  jdkleo
	 * @version: 2014年9月5日 下午4:57:15
	 */
	public static List<String> getLocalIPS() {
		InetAddress ip = null;
		List<String> ipList = new ArrayList<String>();
		try {
			Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface
					.getNetworkInterfaces();
			while (netInterfaces.hasMoreElements()) {
				NetworkInterface ni = (NetworkInterface) netInterfaces
						.nextElement();
				Enumeration<InetAddress> ips = ni.getInetAddresses();
				while (ips.hasMoreElements()) {
					ip = (InetAddress) ips.nextElement();
					if (!ip.isLoopbackAddress() 
							&& ip.getHostAddress().matches(
									"(\\d{1,3}\\.){3}\\d{1,3}")) {
						ipList.add(ip.getHostAddress());
					}
				}
			}
		} catch (Exception e) {
			OutUtil.error(IpUtil.class, e.getMessage());
		}
		return ipList;
	}
	
	/**
	 * 此方法描述的是:获得服务器的MAC地址
	 * @author:  jdkleo
	 * @version: 2014年9月5日 下午1:27:25
	 */
	public static String getMacId() {
		String macId = "";
		InetAddress ip = null;
		NetworkInterface ni = null;
		try {
			boolean bFindIP = false;
			Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface
					.getNetworkInterfaces();
			while (netInterfaces.hasMoreElements()) {
				if (bFindIP) {
					break;
				}
				ni = (NetworkInterface) netInterfaces
						.nextElement();
				// ----------特定情况,可以考虑用ni.getName判断
				// 遍历所有ip
				Enumeration<InetAddress> ips = ni.getInetAddresses();
				while (ips.hasMoreElements()) {
					ip = (InetAddress) ips.nextElement();
					if (!ip.isLoopbackAddress() // 非127.0.0.1
							&& ip.getHostAddress().matches(
									"(\\d{1,3}\\.){3}\\d{1,3}")) {
						bFindIP = true;
						break;
					}
				}
			}
		} catch (Exception e) {
			OutUtil.error(IpUtil.class, e.getMessage());
		}
		if (null != ip) {
			try {
				macId = getMacFromBytes(ni.getHardwareAddress());
			} catch (SocketException e) {
				OutUtil.error(IpUtil.class, e.getMessage());
			}
		}
		return macId;
	}
	
	/**
	 * 此方法描述的是:获得服务器的MAC地址(多网卡)
	 * @author:  jdkleo
	 * @version: 2014年9月5日 下午1:27:25
	 */
	public static List<String> getMacIds() {
		InetAddress ip = null;
		NetworkInterface ni = null;
		List<String> macList = new ArrayList<String>();
		try {
			Enumeration<NetworkInterface> netInterfaces = (Enumeration<NetworkInterface>) NetworkInterface
					.getNetworkInterfaces();
			while (netInterfaces.hasMoreElements()) {
				ni = (NetworkInterface) netInterfaces
						.nextElement();
				// ----------特定情况,可以考虑用ni.getName判断
				// 遍历所有ip
				Enumeration<InetAddress> ips = ni.getInetAddresses();
				while (ips.hasMoreElements()) {
					ip = (InetAddress) ips.nextElement();
					if (!ip.isLoopbackAddress() // 非127.0.0.1
							&& ip.getHostAddress().matches(
									"(\\d{1,3}\\.){3}\\d{1,3}")) {
						macList.add(getMacFromBytes(ni.getHardwareAddress()));
					}
				}
			}
		} catch (Exception e) {
			OutUtil.error(IpUtil.class, e.getMessage());
		}
		return macList;
	}
	
	private static String getMacFromBytes(byte[] bytes) {
		StringBuffer mac = new StringBuffer();
		byte currentByte;
		boolean first = false;
		for (byte b : bytes) {
			if (first) {
				mac.append("-");
			}
			currentByte = (byte) ((b & 240) >> 4);
			mac.append(Integer.toHexString(currentByte));
			currentByte = (byte) (b & 15);
			mac.append(Integer.toHexString(currentByte));
			first = true;
		}
		return mac.toString().toUpperCase();
	}
	
}

 

分享到:
评论
1 楼 秋千以北 2015-04-17  
[color=red][/color]果断拿走

相关推荐

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

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

    java 获取客户端ip mac地址

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

    java获取客户端ip及mac地址

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

    java IP地址工具类,java IP地址获取,java获取客户端IP地址

    在Java中,获取IP地址通常涉及到`java.net`包中的类,如`InetAddress`。`IpUtils`可能是对这些原生类的功能进行了封装,以便更易于使用。例如,它可能包含以下功能: 1. **获取本地IP地址**:在多网络接口的设备上...

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

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

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

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

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

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

    pb获取ip地址/mac地址

    标题中的"pb获取ip地址/mac地址"指的是在PowerBuilder(简称pb)环境下获取计算机的IP地址和MAC地址。PowerBuilder是一种流行的.NET和Java应用程序开发工具,尤其适合于创建数据库驱动的应用程序。在这个场景中,...

    Java获取客户端IP及Mac地址(同网段).rar

    Java,运用了多线程内部执行,不影响其他登录验证操作。在Controller类获取客户端的IP地址的方法是:request....所以我们这里添加了条件验证,将客户端IP及Mac地址(同网段)与本地本地IP及Mac地址方法分开。

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

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

    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 获取计算机名与IP地址

    在Java编程语言中,获取计算机名和IP地址是常见的网络编程任务。这主要涉及到Java的`java.net`包,该包提供了多种类和接口来处理网络相关的操作。下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看...

    java获取公网IP

    本文将详细讨论如何使用Java编程语言来获取公网IP地址。 首先,我们需要理解获取公网IP的基本原理。通常,当我们的设备连接到互联网时,ISP(Internet Service Provider,互联网服务提供商)会分配一个公网IP。这个...

    IP工具类,通过传入的request获取ip地址(JAVA)

    在IT行业中,尤其是在Web开发领域,获取客户端的IP地址是一项常见的任务。这有助于跟踪用户行为、提供地域针对性的服务,甚至进行安全防护。本篇文章将详细解释如何在Java环境下,通过Servlet和Reactive编程模型来...

    java获取ip地址

    ### Java获取IP地址知识点解析 在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的...

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

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

    获取本地ip,mac地址

    在IT行业中,网络通信是不可或缺的一部分,而获取设备的IP和MAC地址是网络通信的基础。本文将详细讲解如何使用C#编程语言来实现获取本地IP和MAC地址的功能。 首先,让我们了解一下IP和MAC地址的基本概念。IP地址...

    java实现根据ip地址获取地理位置的代码分享

    在Java编程中,有时我们需要根据用户的IP地址获取其所在地理位置的信息,这在网站统计、个性化推荐或者安全防护等方面都有重要作用。本篇文章将分享一个利用Java实现根据IP地址获取地理位置的简单示例,主要使用了QQ...

    get_mac_address_using_java.rar_获取IP地址_获取mac地址

    通过阅读和理解这两份代码,你可以更深入地了解Java中获取IP和MAC地址的实现细节,并将其应用到自己的项目中。在实际应用中,务必考虑到各种可能的异常情况,如网络不可达、权限不足等,并提供相应的错误处理机制。

    Android获取手机ip地址及mac地址

    在Android开发中,获取设备的IP地址和MAC地址是常见的需求,尤其是在进行网络通信或设备识别时。以下是对如何在Android应用中实现这一功能的详细解析。 ### 一、获取MAC地址 MAC地址(Media Access Control ...

Global site tag (gtag.js) - Google Analytics