輕松

          記述我學(xué)習(xí)java的里程

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          友情鏈接

          最新評(píng)論

          一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法

          最近在做老系統(tǒng)的CS到BS的改造。碰到一個(gè)需要獲取指定IP主機(jī)MAC地址的問題。實(shí)在沒有想出什么好辦法,只能通過DOS命令折中一下。壞處就是不能跨平臺(tái)了,哪位大俠知道怎么做純java的實(shí)現(xiàn)?一定指點(diǎn)我一下。
          package com.dayang.utils;

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

          /**
           * 網(wǎng)絡(luò)工具
           *
           * @author relax
           */
          public class NetworkUtil {

           /**
            * 根據(jù)指定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);//執(zhí)行DOS命令
             InputStreamReader ir = new InputStreamReader(p.getInputStream());//獲取返回結(jié)果的流
             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 輕松 閱讀(2465) 評(píng)論(7)  編輯  收藏 所屬分類: 其他文章

          評(píng)論

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-01 09:49 lkj107

          如果對(duì)方能夠有防火墻,則得不到MAC地址  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-01 11:07 隔葉黃鶯

          還有不光程序自身不能跨平臺(tái),而且對(duì)方機(jī)器是非 Windows 平臺(tái)也獲取不到,再就跨路由通過 NAT 的應(yīng)該也不行。  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-01 11:37 輕松

          各位不要光提毛病有沒有什么好的解決方案,給分享一下。  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-02 10:30 會(huì)飛的豬

          不了解你的程序結(jié)構(gòu),要是可以的話,考慮一下服務(wù)器端主動(dòng)向客戶端詢問其MAC地址,讓其給返回的方式呢?服務(wù)器用這種方式去獲取的話,那得寫出多個(gè)class文件,分別實(shí)現(xiàn)各個(gè)操作系統(tǒng)的,之后還要檢測(cè)操作系統(tǒng)是哪類,根據(jù)其去調(diào)用相應(yīng)的實(shí)體類才能做到通用,比較麻煩。(如果是B/S的話可以考慮嵌入一個(gè)不可見的applet來實(shí)現(xiàn))  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-02 11:47 輕松

          客戶機(jī)現(xiàn)在主要就是windows操作系統(tǒng),按原CS程序的做法就是服務(wù)器直接獲取的。  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法 2009-09-05 09:33 凌晨風(fēng)

          獲取遠(yuǎn)程主機(jī)有兩種思路:
          1. 發(fā)送命令模式
          2. UDP方式

          但是B/S模式一般需要跨平臺(tái),當(dāng)然網(wǎng)上有一種使用js調(diào)用動(dòng)態(tài)庫(kù)實(shí)現(xiàn),但是插件提示讓客戶很不滿意,我的做法是applet實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

          # re: 一種折中的取得遠(yuǎn)程主機(jī)MAC地址的方法[未登錄] 2009-09-07 09:32 Diablo.Wu

          寫個(gè)applet,如果客戶機(jī)只是windows+ie,那就把你以前cs的東西封個(gè)active不就得了。  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 永兴县| 万州区| 周宁县| 景东| 洛南县| 阜新市| 冕宁县| 德钦县| 万荣县| 遂昌县| 定安县| 卢龙县| 斗六市| 廊坊市| 广西| 疏附县| 怀集县| 桂东县| 建德市| 财经| 马山县| 吉林省| 永胜县| 盱眙县| 崇信县| 鹿邑县| 吴桥县| 金门县| 波密县| 香河县| 卢氏县| 延庆县| 伊金霍洛旗| 东城区| 扎赉特旗| 南充市| 沾益县| 藁城市| 德惠市| 通辽市| 冀州市|