輕松

          記述我學習java的里程

          常用鏈接

          統(tǒng)計

          積分與排名

          友情鏈接

          最新評論

          一種折中的取得遠程主機MAC地址的方法

          最近在做老系統(tǒng)的CS到BS的改造。碰到一個需要獲取指定IP主機MAC地址的問題。實在沒有想出什么好辦法,只能通過DOS命令折中一下。壞處就是不能跨平臺了,哪位大俠知道怎么做純java的實現(xià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 輕松 閱讀(2456) 評論(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 會飛的豬

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

          # re: 一種折中的取得遠程主機MAC地址的方法 2009-09-02 11:47 輕松

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

          # re: 一種折中的取得遠程主機MAC地址的方法 2009-09-05 09:33 凌晨風

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

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

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

          寫個applet,如果客戶機只是windows+ie,那就把你以前cs的東西封個active不就得了。  回復  更多評論   

          主站蜘蛛池模板: 石景山区| 合肥市| 平武县| 武安市| 平南县| 乐都县| 榕江县| 武隆县| 麻江县| 齐河县| 兰溪市| 乐都县| 治多县| 张家川| 淳化县| 平顶山市| 福海县| 高安市| 白玉县| 双鸭山市| 疏附县| 赣州市| 镇安县| 安国市| 抚松县| 常熟市| 阳城县| 平江县| 屏山县| 瓮安县| 台北市| 泾源县| 景泰县| 清涧县| 息烽县| 湖南省| 芦溪县| 襄垣县| 镇雄县| 长沙县| 博野县|