`

JAVA程序 通过IP地址 获取MAC地址

阅读更多

我们都知道通过在电脑上敲 cmd 后,输入ipconfig -all 来获取IP地址或者MAC地址,java程序可以在window和linux下获取MAC地址等信息!看下面代码

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 * 
 * @author  http://zhidao.baidu.com/question/292753600.html
 */
public class TestMac {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        System.out.println("Operation System=" + getOsName());
        System.out.println("Mac Address=" + getMACAddress());
        System.out.println("通过ip获取mac地址为:" + getMACAddress("192.168.2.14"));
        long end = System.currentTimeMillis();
        System.out.println("获取电脑MAC地址时间为:" + (end - start));
    }
    /**
     * 获取操作系统名称
     */
    public static String getOsName() {
        String os = "";
        os = System.getProperty("os.name");
        return os;
    }
    /**
     * 获取MAC地址
     */
    public static String getMACAddress() {
        String address = "";
        String os = getOsName();
        //根据操作系统类型获取MAC地址
        if (os.startsWith("Windows")) {
            try {
                String command = "cmd.exe /c ipconfig /all";
                Process p = Runtime.getRuntime().exec(command);
                BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line;
                while ((line = br.readLine()) != null) {
                    if (line.indexOf("Physical Address") > 0) {
                        int index = line.indexOf(":");
                        index += 2;
                        address = line.substring(index);
                        break;
                    }
                }
                br.close();
                return address.trim();
            } catch (IOException e) {
            }
        } else if (os.startsWith("Linux")) {
            String command = "/bin/sh -c ifconfig -a";
            Process p;
            try {
                p = Runtime.getRuntime().exec(command);
                BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
                String line;
                while ((line = br.readLine()) != null) {
                    if (line.indexOf("HWaddr") > 0) {
                        int index = line.indexOf("HWaddr") + "HWaddr".length();
                        address = line.substring(index);
                        break;
                    }
                }
                br.close();
            } catch (IOException e) {
            }
        }
        address = address.trim();
        return address;
    }
    /**
     * 根据IP地址获取MAC地址
     */
    public static String getMACAddress(String ipAddress) {
        String str = "", strMAC = "", macAddress = "";
        try {
            Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
            InputStreamReader ir = new InputStreamReader(pp.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            for (int i = 1; i < 100; i++) {
                str = input.readLine();
                if (str != null) {
                    if (str.indexOf("MAC Address") > 1) {
                        strMAC = str.substring(str.indexOf("MAC Address") + 14, str.length());
                        break;
                    }
                }
            }
        } catch (IOException ex) {
            return "Can't Get MAC Address!";
        }
        if (strMAC.length() < 17) {
            return "Error!";
        }
        macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5) + ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11) + ":"
                + strMAC.substring(12, 14) + ":" + strMAC.substring(15, 17);
        return macAddress;
    }
}
 
分享到:
评论

相关推荐

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

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

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

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

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

    1. **局域网扫描**:程序会遍历局域网内的所有IP地址,这通常是通过IP地址的子网掩码计算得出的IP范围。 2. **匹配IP与MAC**:找到对应于给定IP地址的MAC地址。在多台设备的环境中,可能有多个IP,但我们需要的是与...

    pb获取ip地址/mac地址

    网络中根据IP地址获取MAC地址,通常涉及ARP(地址解析协议)。在Windows系统中,可以使用`arp -a`命令来查询本地ARP缓存,查找对应IP的MAC地址。然而,这仅适用于同一局域网内的IP。如果目标IP不在本地网络,可能...

    获取本地IP地址的小程序

    这篇教程将围绕"获取本地IP地址的小程序"展开,通过Java语言实现这一功能,并提供相关的源代码供学习交流。 首先,我们要了解什么是IP地址。IP地址(Internet Protocol Address)是互联网上的每个设备独一无二的...

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

    3. **获取MAC地址**:在Java中,直接获取MAC(物理)地址相对复杂,因为这涉及到操作系统级别的硬件信息。通常,可以通过`java.net.NetworkInterface`类来获取。首先,通过`NetworkInterface.getNetworkInterfaces()...

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

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

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

    通过比较IP地址与这些范围,可以判断是否为内网IP。例如,在Python中,可以使用`ipaddress`库,将IP地址转换为IPv4Network对象,然后检查其是否为私有网络。 4. **字符串IP转Number地址**: 字符串形式的IP地址...

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

    #### Java实现跨网段MAC地址获取 在Java环境中实现跨网段获取远程主机MAC地址,首先需要利用现有的SNMP库,如JsNMP或SNMP4J。这些库提供了丰富的API,可以方便地与SNMP协议交互,执行Get、Set等操作。具体步骤如下...

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

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

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

    这段代码中,首先通过`NetworkInterface.getNetworkInterfaces()`方法获取所有网络接口,然后遍历这些接口,对于每个接口再获取其所有IP地址,通过`isLoopbackAddress()`判断是否为回环地址,如果不是则返回该IP地址...

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

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

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

    以下是一个简单的Java示例,展示如何通过IP地址获取客户端的Mac地址: 首先,我们需要理解这个例子的基本流程: 1. 执行操作系统命令:通常,我们不能直接通过Java API获取Mac地址,而是需要借助操作系统提供的命令...

    获取Android手机WiFi局域网下ip地址和MAC地址以及网关地址的小程序.zip

    如果您下载了本程序,但是该程序存在问题无法运行,那么您可以选择退款或者寻求我们的帮助(如果找我们帮助的话,是需要追加额外费用的)。另外,您不会使用资源的话(这种情况不支持退款),也可以找我们帮助(需要...

    Android_获取手机IP和MAC地址

    这段代码会遍历所有的网络接口,检查每个接口的IP地址,并返回第一个非回环(loopback)的IP地址,也就是通常的公网或局域网IP。 获取MAC地址则相对复杂一些,因为Android在6.0及以上版本对MAC地址进行了隐私保护,...

    获取mac地址的几种方法

    在计算机网络中,MAC(Media Access Control)地址是硬件设备在网络层的身份标识,通常用于局域网中的数据传输。...对于开发者而言,通过编程获取MAC地址则更具有灵活性,可以根据实际需求集成到应用程序中。

    获取windows or unix系统下服务器MAC地址及服务器IP地址

    根据文件名`GetMAC.java`推测,这是一个Java程序,用于获取服务器的MAC地址。通常,它可能包含以下功能: - 首先,通过`java.net.NetworkInterface`类列出所有网络接口。 - 然后,遍历这些接口,对每个接口调用`...

    基于 Java 使用 ARP 协议获取局域网内部活动主机的物理地址【100011074】

    首先寻找并打开适合的网络适配器,然后根据输入的局域网 IP 地址构造 ARP 的数据包,然后通过 Java 对网卡数据捕获需要用到 jpcap,jpcap 调用 wincap 实现数据包的发送,并监听返回的数据包,分析局域网内返回的...

    扫描内网ip地址 局域网mac地址扫描

    通过使用特定的工具,我们可以快速获取网络上所有活动设备的IP和MAC信息。例如,提供的"run.exe"文件可能是一个简单的扫描程序,用于自动发现并列出局域网内的IP和MAC对。用户只需运行该程序,点击"刷新"按钮,就能...

Global site tag (gtag.js) - Google Analytics