import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; public class MacUtils { /** * 根据IP地址获取mac地址 * @param ipAddress 如:127.0.0.1 * @return * @throws SocketException * @throws UnknownHostException */ public static String getMac(String ipAddress) throws SocketException, UnknownHostException { String str = ""; String macAddress = ""; final String LOOPBACK_ADDRESS = "127.0.0.1"; // 如果为127.0.0.1,则获取本地MAC地址。 if (LOOPBACK_ADDRESS.equals(ipAddress)) { InetAddress inetAddress = InetAddress.getLocalHost(); // 貌似此方法需要JDK1.6。 byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress(); // 下面代码是把mac地址拼装成String StringBuilder sb = new StringBuilder(); 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地址并返回 macAddress = sb.toString().trim().toUpperCase(); return macAddress; } else { // 获取非本地IP的MAC地址 try { //System.out.println(ipAddress); Process p = Runtime.getRuntime().exec("nbtstat -A " + ipAddress); //System.out.println("===process=="+p); InputStreamReader ir = new InputStreamReader(p.getInputStream()); BufferedReader br = new BufferedReader(ir); while ((str = br.readLine()) != null) { if(str.indexOf("MAC") > 1 ){ macAddress = str.substring(str.indexOf("MAC") + 9, str.length()); macAddress = macAddress.trim(); //System.out.println("macAddress:" + macAddress); break; } } p.destroy(); br.close(); ir.close(); } catch (IOException ex) { } return macAddress; } } public static void main(String[] args) { System.out.println(System.currentTimeMillis()); try { System.out.println(getMac("10.10.16.170")); } catch (Exception e) { e.printStackTrace(); } System.out.println(System.currentTimeMillis()); } }
引用至:http://fanshuyao.iteye.com/blog/2317462
相关推荐
java中通过ip获取远程客户端的mac地址,支持跨平台
获取用户请求IP地址 根据IP地址获取mac地址
在实际开发中,获取客户端的IP地址是常见的需求,而获取MAC地址则较为罕见且可能存在一定的法律风险和技术难题。开发者应当根据具体的应用场景和需求来选择合适的方法。此外,在处理敏感信息时,还应遵循相关的法律...
在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...
LINUX编程,通过IP地址获取MAC地址代码。方
这里提供了一个简单的示例,用于在 Windows 系统中通过 IP 地址获取 MAC 地址: ```java public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = Runtime....
在Java编程语言中,获取一个特定IP地址对应的MAC(Media Access Control)地址是一项常见的网络编程任务。MAC地址是网络设备在网络层的物理地址,用于标识网络接口控制器(NIC)。在局域网(LAN)中,MAC地址是唯一...
Java根据本地IP获取MAC地址的方法 Java根据本地IP获取MAC地址的方法是指通过Java语言获取本机或客户端的MAC地址。MAC地址是媒体访问控制地址,是网络设备的唯一标识符。在Java中,可以使用InetAddress和Network...
网络中根据IP地址获取MAC地址,通常涉及ARP(地址解析协议)。在Windows系统中,可以使用`arp -a`命令来查询本地ARP缓存,查找对应IP的MAC地址。然而,这仅适用于同一局域网内的IP。如果目标IP不在本地网络,可能...
Java获取本机MAC地址IP地址主机名
总的来说,获取MAC地址通常比获取IP地址更为复杂,因为IP地址可以通过标准的网络API直接获取,而MAC地址涉及到更底层的网络操作。在实际开发中,如果只需要识别网络上的设备,通常使用IP地址就足够了。只有在需要...
在对网内主机进行监控时需要通过java获取远程机器的mac地址
可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!
3. **获取MAC地址**:在Java中,直接获取MAC(物理)地址相对复杂,因为这涉及到操作系统级别的硬件信息。通常,可以通过`java.net.NetworkInterface`类来获取。首先,通过`NetworkInterface.getNetworkInterfaces()...
在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...
本篇文章将深入探讨如何利用Java编程语言通过SNMP协议来获取交换机设备上的详细信息,包括PC机的MAC地址、IP地址以及连接的端口号。 首先,SNMP是一种应用层协议,它允许网络管理员远程收集和配置网络设备的数据。...
java获取IP地址和MAC地址。 /** * 通过HttpServletRequest返回IP地址 * @param request HttpServletRequest * @return ip String * @throws Exception */ public String getIpAddr(HttpServletRequest ...
以下是一个示例,展示如何通过IP地址获取MAC地址: ```java public class GetMACAddress { public String getMACAddress(String ipAddress) { String str = "", strMAC = "", macAddress = ""; try { Process...
#### Java实现跨网段MAC地址获取 在Java环境中实现跨网段获取远程主机MAC地址,首先需要利用现有的SNMP库,如JsNMP或SNMP4J。这些库提供了丰富的API,可以方便地与SNMP协议交互,执行Get、Set等操作。具体步骤如下...