`
citichys
  • 浏览: 14862 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java取得IP对应的MAC地址

阅读更多
package com.eleventh.chapter; 
 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
 
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("192.168.1.125")); 
     }    
分享到:
评论

相关推荐

    java 获取客户端ip mac地址

    在Windows系统中,可以使用`nbtstat -A`命令来获取指定IP地址对应的MAC地址。具体实现如下: ```java public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = ...

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

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

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

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

    ARP协议(ip地址求MAC地址)java代码

    import java.net.Inet4Address; import java.net.InetAddress; import java.util.Arrays; import jpcap.*;...public static byte[] arp(InetAddress ip) throws java.io.IOException{ //发现本机器的网络接口

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

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

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

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

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

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

    pb获取ip地址/mac地址

    在Windows系统中,可以使用`arp -a`命令来查询本地ARP缓存,查找对应IP的MAC地址。然而,这仅适用于同一局域网内的IP。如果目标IP不在本地网络,可能需要通过路由器或网络层的ARP请求来获取,这通常涉及更复杂的网络...

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

    这种设备内部维护了一个MAC地址表,记录了通过它的每个数据包的源和目的MAC地址,以及对应的端口号。利用SNMP协议,可以从这些交换机中读取MAC地址表,进而获取任意远程主机的MAC地址,即便它们位于不同的网段。 ##...

    java通过SNMP协议获取交换机设备信息(如:交换机下的PC机MAC、IP、连接端口号等信息)

    本篇文章将深入探讨如何利用Java编程语言通过SNMP协议来获取交换机设备上的详细信息,包括PC机的MAC地址、IP地址以及连接的端口号。 首先,SNMP是一种应用层协议,它允许网络管理员远程收集和配置网络设备的数据。...

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

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

    java通过ip获取客户端Mac地址的小例子

    2. 解析命令输出:执行命令后,程序会接收到包含Mac地址信息的文本输出,需要对这些输出进行解析,提取出目标IP对应的Mac地址。 在给出的代码中,有两个关键的方法:`callCmd`和`filterMacAddress`。 `callCmd`...

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

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

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

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

    Android_获取手机IP和MAC地址

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

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

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

    用java实现获取MAC地址的方法

    下面展示的是一个名为`GetMACAddress`的类,它包含了一个方法`getMACAddress`用于获取指定IP地址所对应的MAC地址。此外,还提供了一个`main`方法用于测试。 ```java import java.io.IOException; import java.io....

    IP地址计算起始地址和终止地址

    EXCEL表格IP,计算起始地址和终止地址!子网掩码的测算,起始地址和终止地址中间IP地址的填充公式!

    java实现获取用户的MAC地址

    如果IP不是回环地址,需要执行命令行操作,如Windows系统下的`nbtstat -A &lt;ip&gt;`命令,解析输出结果以找到对应IP的MAC地址。 ```java public static String getLocalMac(String ipAddress) throws SocketException, ...

    网络mac 与ip交换机绑定

    1. 在交换机上创建一个MAC/IP绑定表,列明每个设备的MAC地址和对应的IP地址。 2. 配置交换机,使其只允许表中列出的MAC/IP对进行通信。 3. 在Java程序中,可以定期检查并更新这个绑定表,确保新接入设备的合规性。 ...

Global site tag (gtag.js) - Google Analytics