my太阳 2010-01-21 23:10
浏览 364
已采纳

jdk1.5 在Linux系统下如何实现根据ip获得客户端MAC地址

在站内搜了一下,发现只有在Windows系统下实现根据ip获得客户端MAC地址的例子。
主要是根据命令“nbtstat -a ip地址”来获得的。
在Linux下有类似的命令吗?
在Linux下怎么实现呢?

  • 写回答

4条回答 默认 最新

  • xxxxxxxxxxxxxxxxx 2010-01-22 14:34
    关注

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class GetMacFromLinux {

    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;
    }
    
    public static String  getMac(final String ip){
        String[] cmd = {
                "/bin/sh",
                "-c",
                "ping " +  ip + " -c 2 && arp -a"
                };
        String result = callCmd(cmd);
        Pattern pattern = Pattern.compile("((([0-9,A-F,a-f]{1,2}:){1,5})[0-9,A-F,a-f]{1,2})");        
        Matcher matcher = pattern.matcher(result);       
        while(matcher.find()){   
             result = matcher.group(1);
              if(result.indexOf(ip) <= result.lastIndexOf(matcher.group(1))) {
                  break;
              }
        }
    
        return result;
    

    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(getMac("192.168.199.42"));
    
    }
    

    }
    //在ubuntu 7.10下测试通过

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用