`
keepwork
  • 浏览: 332053 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java通过ip获取mac地址-封ip封mac地址

阅读更多
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通过ip获取mac地址源代码.rar

    总之,"java通过ip获取mac地址源代码"是一个实用的工具,它可以帮助Java开发者了解如何在没有内置API的情况下实现特定网络操作。通过学习和分析这段代码,可以加深对网络编程的理解,并扩展在媒体网络领域的知识。

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

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

    java 获取客户端ip mac地址

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

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

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

    java获取客户端ip及mac地址

    Java 提供了多种方式来获取客户端的 IP 地址,其中最常用的是通过 `HttpServletRequest` 对象。 #### 使用 `request.getRemoteAddr()` `request.getRemoteAddr()` 是一种简单但并不总是准确的方法。此方法返回...

    通过IP获取MAC地址代码

    LINUX编程,通过IP地址获取MAC地址代码。方

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

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

    pb获取ip地址/mac地址

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

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

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

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

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

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

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

    java根据本地IP获取mac地址的方法

    Java根据本地IP获取MAC地址的方法是指通过Java语言获取本机或客户端的MAC地址。MAC地址是媒体访问控制地址,是网络设备的唯一标识符。在Java中,可以使用InetAddress和NetworkInterface两个类来获取MAC地址。 在...

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

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

    java中获取客户端IP MAC信息

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

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

    但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。所以...

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

    然而,传统的获取远程主机MAC地址的方法,如通过IP Helper API的SendARP函数,存在明显的局限性——仅能有效在本地网段内工作,对于跨网段的主机,此方法往往只能获取到网关的MAC地址,而非目标主机的真实MAC地址。...

    通过ping方式,获取局域网所有ip,然后通过ip获取mac地址

    本文将深入探讨如何通过ping命令获取局域网内的所有IP地址,并进一步利用这些IP来获取对应的MAC地址。 首先,让我们了解基础知识。IP(Internet Protocol)地址是一个数字标签,用于唯一标识网络上的每台设备。它...

    asp.net获得用户IP和MAC地址的方法

    给定的代码片段展示了如何通过ASP.NET页面内的JScript脚本来调用WMI服务并获取MAC地址、IP地址以及DNS主机名。具体步骤如下: - 创建`locator`对象用于连接WMI服务。 - 使用`ConnectServer()`方法建立连接。 -...

    JAVA如何获取客户端IP地址和MAC地址

    JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...

Global site tag (gtag.js) - Google Analytics