当前获取MAC地址的方法主要有:
1.采用Runtime.getRuntime().exec("ipconfig /all")获取,这种获取的是本机的相关信息;
2.采用Runtime.getRuntime().exec("nbtstat -A " + 对应客户端IP),这种方式如果有防火墙就获取不到了;
3.网上有说用ARP,SNMP,NBT等,据说ARP只能在同网段局域网内,SNMP据说对方要开启这个端口,NBT也是在是不知道怎么去实现
那位老大们有这方面经验的帮个忙啊,坐等.

解决方案 »

  1.   

    = = 掉CMD 服务器要是Linux 不管用
      

  2.   

    我指的环境都是windows,没说清楚,不好意思了
      

  3.   

    是 C/S 的客户端,还是 B/S 的客户端?B/S 的话就甭想了
    C/S 的话,可以使用 JDK 6 中 java.net.NetworkInterface#getHardwareAddress() 方法
      

  4.   

    垮网段的mac得来貌似没什么用,搂住,能说说你得到这个MAC来做什么吗?
      

  5.   

    回6楼:项目中获取MAC地址主要是为了监控所用.对于跨网段获取MAC地址可能使用范围不是很广泛,但本项目所针对用户属于集团用户性质,所属用户分布在几个不同的区域也被划分在不同的网段之中(不同地区的内部网段,非公网),这是属于用户的一个指定需求,没办法.
      

  6.   

    补充一下:
    一.此跨网段含义主要涉及到路由器转换,防火墙,IP多网段(二、三级都有可能),用户PC防火墙,内网-公网-内网多转换等,貌似采用简单的硬件信息获取方式很难(个人觉得可能需要产生通信).
    二.通过前台页面比如JS或插件方式又会涉及到IE安全(需用户主动允许或强制安装)的问题,但项目需要的是在客户的每一次操作都能有记录,比如登陆、退出等(用户不允许或不安装又可能导致信息获取不到),如果用户被强制插件安装个人觉得方式比较丑陋.
    现在正在研究采用SNMP和NBT方式,哪位如果有这方面的经验或者建议的,欢迎指导
      

  7.   


    正常情况下 只能得到同意网段的其他设备的mac.垮网段了,你只有让客户段自己得到自己的mac,再发送给你.不能从服务器上得到了
      

  8.   

    给你想了一个其他方案.跨网段mac肯定是得不到了.但是IP可以得到.在DHCP服务器上记录ip分配的相关日之,活着在局域网内绑定ip和mac.结合以上2个信息,就可以实现监控了,不过要麻烦很多