`
zhibaichuan
  • 浏览: 4431 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

java 访问远程主机MAC地址

    博客分类:
  • java
阅读更多

1.通过主机名称获取MAC地址

 

    /**
     * 获取操作系统名称
     */ 
    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; 
    }  

 

2.通过远程主机IP地址获取MAC地址

    /**
     * 获取远程MAC地址
     * @return
     */
    public static String getRemoteMac(){
        HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
        return getRemoteMac(request);       
    }
   
    /**
     * 获取远程MAC地址
     * @param request
     * @return
     */
    public static String getRemoteMac(HttpServletRequest request){
        String ip =  request.getRemoteAddr();
        return getMACAddress(ip);
    }

    /**
     * 通过远程IP获取MAC地址
     * @param ip 远程IP地址
     * @return
     */
    public static String getMACAddress(String ip) {
        String str = "";
        String macAddress = "";
        try {
            Process p = Runtime.getRuntime().exec("nbtstat -a " + ip);
            InputStreamReader ir = new InputStreamReader(p.getInputStream(),"GBK");
            LineNumberReader input = new LineNumberReader(ir);
            for (int i = 1; i < 100; i++) {
                str = input.readLine();
                logger.info("nbtstat -a " + ip +"\n mac info:"+str);
                if (str != null) {
                    if (str.indexOf("MAC 地址",1) > -1) {
                        // 客户端使用的是中文版操作系统
                        macAddress = str.substring(str.indexOf("MAC 地址") + 9,
                                str.length());
                        break;
                    } else if (str.indexOf("MAC Address",1) > -1) {
                        // 客户端使用的是英文版操作系统
                        macAddress = str.substring(
                                str.indexOf("MAC Address") + 14, str.length());
                        break;
                    }
                }else{
                    logger.error("执行 nbtstat -a " + ip + "指令执行失败");
                }
            }
        } catch (IOException e) {
            logger.error("=========获取远程mac地址异常=======IOException:", e);
        }
        return macAddress;
    }

 

 

分享到:
评论

相关推荐

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

    ### 跨网段获取远程主机MAC地址:方法与Java实现 #### 引言与背景 在计算机网络领域,MAC地址(Media Access Control Address)作为网卡的唯一标识,扮演着关键角色,尤其是在网络通信和安全监控中。然而,传统的...

    E7段获取远程主机MAC地址的方法与java实现宣贯.pdf

    本文探讨了跨网段获取远程主机MAC地址的问题,指出SendARP方法的局限性,并提出使用SNMP协议作为替代方案。通过SNMP协议,可以克服跨网段的限制,有效获取任何网段的主机MAC地址。在Java环境中,利用SNMP4J等库可以...

    用Java实现的网络唤醒工具

    Java网络唤醒工具是一种基于Java编程语言开发的软件,它允许用户通过输入目标计算机的MAC地址和网络广播地址来远程启动该计算机。这个工具利用了"网络唤醒"(Wake-on-LAN,简称WOL)技术,这项技术使得在电源关闭或...

    Java实现跨平台的MAC地址读取

    在现代网络应用中,查询系统所在主机的网卡硬件(MAC)地址对于实现诸如远程唤醒或版权保护等功能至关重要。传统的C++或VB程序通常依赖于特定操作系统的API来实现这一功能,这虽然简单但缺乏跨平台能力。Java作为一...

    java 获取mac地址的两种方法(推荐)

    在Java编程中,获取MAC(Media Access Control)地址是一项常见的任务,特别是在网络编程或者设备识别时。MAC地址是一个硬件地址,标识了网络设备在物理层的身份。本文将介绍两种在Java中获取MAC地址的方法。 首先...

    java远程控制软件JPCanyWhere

    用户应能轻松配置远程主机信息,启动或断开会话。 5. **文件传输**: 支持文件传输是远程控制软件的重要组成部分。JPCanyWhere可能提供拖放、剪贴板共享或专用的文件传输工具,使用户能在本地和远程计算机之间方便...

    获取主机拨号IP地址

    本文将深入探讨如何在操作系统中获取主机本地IP地址以及宽带拨号时的IP地址,主要针对的是动态分配的IP地址,因为这通常是家庭或小型办公室网络中常见的设置。 首先,我们需要了解IP地址的基本概念。IP地址...

    java-编写跨平台Java程序注意事项

    - 获取主机名时,应使用`java.net.InetAddress.getHostName()`,而获取IP地址则使用`getAddress()`方法。这样可以确保在不同平台上都能获得正确的结果。 - 例如,对于域名`www.263.net`,应先解析为IP地址再进行后续...

    sapgui 750 for java rev1

    总的来说,SAP GUI 750 for Java Rev1为Linux用户提供了一个强大且灵活的SAP访问工具,它通过Java技术确保了跨平台的兼容性,并且在功能和用户体验方面进行了持续优化。对于那些在Linux环境下工作的SAP用户来说,这...

    java 局域网监控程序

    1. **设备发现**:利用Java的网络API,程序可以扫描并发现局域网内的设备,收集IP地址、MAC地址、主机名等信息。 2. **流量监控**:通过监听网络接口,程序可以统计每台设备的上传和下载流量,这有助于识别带宽消耗...

    Java16道面试题及答案

    常见的Valve类型包括访问日志、远程地址过滤、远程主机过滤和客户请求记录器。 12. **Servlet生命周期** - Tomcat接收请求并映射到相应的Servlet。 - 如果Servlet尚未加载,Tomcat会加载并实例化Servlet。 - ...

    利用魔法封包技术写的远程开机程序

    综上所述,"利用魔法封包技术写的远程开机程序"是一个利用WOL技术的实用工具,它通过输入远程主机的MAC地址实现远程启动计算机的功能。了解和掌握这一技术,不仅可以提高工作效率,还能增强对网络管理的理解和实践...

    SAP GUI770 JAVA

    这款GUI版本是为那些在Java环境下工作的用户提供了一个访问SAP应用的平台,它提供了丰富的功能,使得用户可以高效、直观地操作SAP系统。 在Java平台上运行SAP GUI770,意味着它利用了Java的跨平台性,可以在不同的...

    计算机网络基础--东财在线--作业+随堂随测-题库及答案.docx

    B、可以根据规则对通过的数据包进行检测、过滤 C、识别的是MAC地址,并根据MAC地址寻找路径,转发分组 D、选择最佳路径 、检查网络层地址,转发网络层数据分组 答案:C 【12】 多个终端共用一条通信线路的传输方式...

    Guacamole 简单案例

    Guacamole是一款开源的远程桌面网关,它允许用户通过Web浏览器访问远程桌面,如Windows、Linux或Mac OS。在“Guacamole简单案例”中,我们将探讨如何配置和使用Guacamole,以便无需登录就能实现远程桌面的便捷访问。...

    连接SAP系统驱动包.zip

    4. **编写Java代码**:使用SAP提供的API创建SAP连接,执行RFC调用(远程功能调用)或BAPI(业务对象的编程接口)。 在Linux和Mac操作系统中,配置过程基本相似,但可能需要处理权限问题和路径问题。而在Windows环境...

    电子功用-控制多台电脑主机的系统与方法

    2. VNC(Virtual Network Computing):这是一种基于Java的跨平台远程控制工具,通过图形界面远程控制另一台计算机。VNC依赖于TCP/IP协议,适用于Windows、Linux和Mac OS等操作系统。 3. TeamViewer:这是一款流行...

    vsphere-esxi-55-single-host-management-guide

    2. 添加允许的IP地址列表,仅允许特定网络的设备连接ESXi主机。 3. 设置服务或客户端启动选项,优化性能并提高安全性。 总结,vSphere ESXi 5.5的单主机管理涉及安装和使用vSphere Client,配置ESXi主机的各项参数...

    tomcat-7.0.47

    Apache Tomcat 7.0.47 是一个广泛使用的开源软件,它是一个实现了Java Servlet、JavaServer Pages(JSP)和Java EE的Web应用程序容器。这个版本是Tomcat 7系列的一个具体发行版,提供了对Java标准版7(Java SE 7)的...

Global site tag (gtag.js) - Google Analytics