輕松

          記述我學習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 輕松 閱讀(2458) 評論(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不就得了。  回復  更多評論   

          主站蜘蛛池模板: 普格县| 济南市| 电白县| 长汀县| 普定县| 雷波县| 柳江县| 积石山| 通海县| 广饶县| 蛟河市| 华亭县| 十堰市| 文登市| 隆化县| 北碚区| 法库县| 焦作市| 静宁县| 邳州市| 宜宾县| 罗城| 封开县| 腾冲县| 临汾市| 株洲县| 蓝山县| 东乡族自治县| 开封市| 广宁县| 旺苍县| 宣汉县| 溆浦县| 高州市| 安义县| 霍州市| 基隆市| 云梦县| 阿拉善盟| 林西县| 彭州市|