輕松

          記述我學(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來(lái)實(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)論   

          主站蜘蛛池模板: 许昌县| 化德县| 天祝| 沾化县| 北碚区| 龙南县| 五常市| 岳阳市| 新津县| 香港| 通州区| 禹州市| 仁寿县| 莫力| 报价| 梅河口市| 盐城市| 岑溪市| 新建县| 绥棱县| 乌兰浩特市| 苍山县| 呼玛县| 博野县| 双牌县| 兴国县| 秦皇岛市| 达州市| 葫芦岛市| 水城县| 梁山县| 昂仁县| 神农架林区| 广水市| 浮山县| 鸡东县| 中牟县| 夹江县| 礼泉县| 乌鲁木齐县| 锡林郭勒盟|