轻松

记述我学习java的里程

常用链接

统计

积分与排名

友情链接

最新评论

一种折中的取得远程主机MAC地址的方法

最近在做老系统的CS到BS的改造。碰到一个需要获取指定IP主机MAC地址的问题。实在没有想出什么好办法,只能通过DOS命令折中一下。坏处就是不能跨平台了,哪位大侠知道怎么做纯java的实现?一定指点我一下。
package com.dayang.utils;

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

/**
 * 网络工具
 *
 * @author relax
 */
public class NetworkUtil {

 /**
  * 根据指定IP获取MAC地址
  * @param ip
  * @return
  */
 public static String getMACAddress(String ip) {
  String str;
  String macAddress = null;
  try {
   Process p = Runtime.getRuntime().exec("nbtstat -a " + ip);//执行DOS命令
   InputStreamReader ir = new InputStreamReader(p.getInputStream());//获取返回结果的流
   LineNumberReader input = new LineNumberReader(ir);
   //查找Mac地址
   for (int i = 1; i < 100; i++) {
    str = input.readLine();
    if (str != null) {
     if (str.contains("MAC Address")) {
      macAddress = str.substring(str.indexOf("= ")+2, str.length()).replace("-", "");
      break;
     }
    }
   }
   ir.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  return macAddress;
 }

 public static void main(String args[]) {
  System.err.println(getMACAddress("192.168.0.151"));
 }
}

posted on 2009-08-31 15:30 轻松 阅读(2442) 评论(7)  编辑  收藏 所属分类: 其他文章

评论

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-01 09:49 lkj107

如果对方能够有防火墙,则得不到MAC地址  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-01 11:07 隔叶黄莺

还有不光程序自身不能跨平台,而且对方机器是非 Windows 平台也获取不到,再就跨路由通过 NAT 的应该也不行。  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-01 11:37 轻松

各位不要光提毛病有没有什么好的解决方案,给分享一下。  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-02 10:30 会飞的猪

不了解你的程序结构,要是可以的话,考虑一下服务器端主动向客户端询问其MAC地址,让其给返回的方式呢?服务器用这种方式去获取的话,那得写出多个class文件,分别实现各个操作系统的,之后还要检测操作系统是哪类,根据其去调用相应的实体类才能做到通用,比较麻烦。(如果是B/S的话可以考虑嵌入一个不可见的applet来实现)  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-02 11:47 轻松

客户机现在主要就是windows操作系统,按原CS程序的做法就是服务器直接获取的。  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法 2009-09-05 09:33 凌晨风

获取远程主机有两种思路:
1. 发送命令模式
2. UDP方式

但是B/S模式一般需要跨平台,当然网上有一种使用js调用动态库实现,但是插件提示让客户很不满意,我的做法是applet实现  回复  更多评论   

# re: 一种折中的取得远程主机MAC地址的方法[未登录] 2009-09-07 09:32 Diablo.Wu

写个applet,如果客户机只是windows+ie,那就把你以前cs的东西封个active不就得了。  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: