package com.yjf.test; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 获取MAC地址 * @author sunlightcs * 2011-4-29 * http://hi.juziku.com/sunlightcs/ */ public class GetMacAddress { public static String callCmd(String[] cmd) { String result = ""; String line = ""; try { Process proc = Runtime.getRuntime().exec(cmd); InputStreamReader is = new InputStreamReader(proc.getInputStream()); BufferedReader br = new BufferedReader (is); while ((line = br.readLine ()) != null) { result += line; } } catch(Exception e) { e.printStackTrace(); } return result; } /** * * @param cmd 第一个命令 * @param another 第二个命令 * @return 第二个命令的执行结果 */ public static String callCmd(String[] cmd,String[] another) { String result = ""; String line = ""; try { Runtime rt = Runtime.getRuntime(); Process proc = rt.exec(cmd); proc.waitFor(); //已经执行完第一个命令,准备执行第二个命令 proc = rt.exec(another); InputStreamReader is = new InputStreamReader(proc.getInputStream()); BufferedReader br = new BufferedReader (is); while ((line = br.readLine ()) != null) { result += line; } } catch(Exception e) { e.printStackTrace(); } return result; } /** * * @param ip 目标ip,一般在局域网内 * @param sourceString 命令处理的结果字符串 * @param macSeparator mac分隔符号 * @return mac地址,用上面的分隔符号表示 */ public static String filterMacAddress(final String ip, final String sourceString,final String macSeparator) { String result = ""; String regExp = "((([0-9,A-F,a-f]{1,2}" + macSeparator + "){1,5})[0-9,A-F,a-f]{1,2})"; Pattern pattern = Pattern.compile(regExp); Matcher matcher = pattern.matcher(sourceString); while(matcher.find()){ result = matcher.group(1); if(sourceString.indexOf(ip) <= sourceString.lastIndexOf(matcher.group(1))) { break; //如果有多个IP,只匹配本IP对应的Mac. } } return result; } /** * * @param ip 目标ip * @return Mac Address * */ public static String getMacInWindows(final String ip){ String result = ""; String[] cmd = { "cmd", "/c", "ping " + ip }; String[] another = { "cmd", "/c", "arp -a" }; String cmdResult = callCmd(cmd,another); result = filterMacAddress(ip,cmdResult,"-"); return result; } /** * * @param ip 目标ip * @return Mac Address * */ public static String getMacInLinux(final String ip){ String result = ""; String[] cmd = { "/bin/sh", "-c", "ping " + ip + " -c 2 && arp -a" }; String cmdResult = callCmd(cmd); result = filterMacAddress(ip,cmdResult,":"); return result; } /** * 获取MAC地址 * @return 返回MAC地址 */ public static String getMacAddress(String ip){ String macAddress = ""; macAddress = getMacInWindows(ip).trim(); if(macAddress==null||"".equals(macAddress)){ macAddress = getMacInLinux(ip).trim(); } return macAddress; } /** * 测试 */ public static void main(String[] args) { System.out.println(getMacAddress("220.181.111.148")); } }
开发者博客:www.developsearch.com
相关推荐
java中通过ip获取远程客户端的mac地址,支持跨平台
总之,"java通过ip获取mac地址源代码"是一个实用的工具,它可以帮助Java开发者了解如何在没有内置API的情况下实现特定网络操作。通过学习和分析这段代码,可以加深对网络编程的理解,并扩展在媒体网络领域的知识。
获取用户请求IP地址 根据IP地址获取mac地址
### Java 获取客户端 IP 和 MAC 地址 在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端...
在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...
Java 提供了多种方式来获取客户端的 IP 地址,其中最常用的是通过 `HttpServletRequest` 对象。 #### 使用 `request.getRemoteAddr()` `request.getRemoteAddr()` 是一种简单但并不总是准确的方法。此方法返回...
LINUX编程,通过IP地址获取MAC地址代码。方
Java根据本地IP获取MAC地址的方法是指通过Java语言获取本机或客户端的MAC地址。MAC地址是媒体访问控制地址,是网络设备的唯一标识符。在Java中,可以使用InetAddress和NetworkInterface两个类来获取MAC地址。 在...
标题中的"pb获取ip地址/mac地址"指的是在PowerBuilder(简称pb)环境下获取计算机的IP地址和MAC地址。PowerBuilder是一种流行的.NET和Java应用程序开发工具,尤其适合于创建数据库驱动的应用程序。在这个场景中,...
本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...
Java获取本机MAC地址IP地址主机名
在对网内主机进行监控时需要通过java获取远程机器的mac地址
Java 自动获取本机IP和MAC地址是一项常见的需求,在网络编程和系统管理中经常会用到。这个小工具利用了Java的网络和系统API,能够帮助用户便捷地查看本机的网络配置信息。以下是对相关知识点的详细说明: 1. **Java...
通过阅读和理解这两份代码,你可以更深入地了解Java中获取IP和MAC地址的实现细节,并将其应用到自己的项目中。在实际应用中,务必考虑到各种可能的异常情况,如网络不可达、权限不足等,并提供相应的错误处理机制。
然而,传统的获取远程主机MAC地址的方法,如通过IP Helper API的SendARP函数,存在明显的局限性——仅能有效在本地网段内工作,对于跨网段的主机,此方法往往只能获取到网关的MAC地址,而非目标主机的真实MAC地址。...
可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!
但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。所以...
本文将深入探讨如何通过ping命令获取局域网内的所有IP地址,并进一步利用这些IP来获取对应的MAC地址。 首先,让我们了解基础知识。IP(Internet Protocol)地址是一个数字标签,用于唯一标识网络上的每台设备。它...
给定的代码片段展示了如何通过ASP.NET页面内的JScript脚本来调用WMI服务并获取MAC地址、IP地址以及DNS主机名。具体步骤如下: - 创建`locator`对象用于连接WMI服务。 - 使用`ConnectServer()`方法建立连接。 -...
JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...