新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > JAVA得到網卡物理地址(Windows和Linux)

        JAVA得到網卡物理地址(Windows和Linux)

        作者: 時間:2016-09-12 來源:網絡 收藏

        在我們在寫程序的過程中,有些時候需要知道一些電腦的硬件信息,比如我們寫一些需要注冊的程序的時候,就需要得到某個電腦特定的信息,一般來說,網卡的物理地址是不會重復的,我們正好可以用它來做為我們識別一臺電腦的標志.那如何得到網卡的物理地址呢?我們可以借助于ProcessBuilder這個類,這個類是JDK1.5新加的,以前也可以用Runtime.exce這個類.在此我們將演示一下如何在Windows和Linux環境下得到網卡的物理地址.

        本文引用地址:http://www.104case.com/article/201609/305055.htm

        /*

        * Test.java

        *

        * Created on 2007-9-27, 9:11:15

        *

        * To change this template, choose Tools   Templates

        * and open the template in the editor.

        */

        package test2;

        import java.io.BufferedReader;

        import java.io.IOException;

        import java.io.InputStreamReader;

        import java.util.Properties;

        import java.util.logging.Level;

        import java.util.logging.Logger;

        /**

        *

        * @author hadeslee

        */

        public class Test {

        public static String getMACAddress() {

        String address = ;

        String os = System.getProperty(os.name);

        System.out.println(os);

        if (os != null) {

        if (os.startsWith(Windows)) {

        try {

        ProcessBuilder pb = new ProcessBuilder(ipconfig, /all);

        Process p = pb.start();

        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line;

        while ((line = br.readLine()) != null) {

        if (line.indexOf(Physical Address) != -1) {

        int index = line.indexOf(:);

        address = line.substring(index + 1);

        break;

        }

        }

        br.close();

        return address.trim();

        } catch (IOException e) {

        }

        }else if(os.startsWith(Linux)){

        try {

        ProcessBuilder pb = new ProcessBuilder(ifconfig);

        Process p = pb.start();

        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line;

        while((line=br.readLine())!=null){

        int index=line.indexOf(硬件地址);

        if(index!=-1){

        address=line.substring(index+4);

        break;

        }

        }

        br.close();

        return address.trim();

        } catch (IOException ex) {

        Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);

        }

        }

        }

        return address;

        }

        public static void main(String[] args) {

        System.out.println( + Test.getMACAddress());

        }

        }

        我們可以看一下1.5新增的ProcessBuilder這個類,這個類比起以前用Runtime.exec來說,要強大一些,它可以指定一個環境 變量,并指定程序運行時的目錄空間,并且也可以得到程序運行時的環境變量.因為ipconfig這個命令已經是system32里面的,所以不需要我們另外再設環境變量或者指定程序的運行時目錄空間.我們直接用就可以了,然后得到進程的輸出流,就可以分析出我們所需要的東西了.是不是挺簡單的呢

        此程序可以得到windows下和Linux下的網卡地址,不過LINUX要是中文版的,英文版的也一樣,只不過把字替換一下就可以了。這樣我們的程序就有了兩個平臺的實現。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 望江县| 仪陇县| 巴彦淖尔市| 绵阳市| 岳阳县| 白河县| 娄底市| 安达市| 都江堰市| 新巴尔虎左旗| 福安市| 孟津县| 凤庆县| 渭南市| 阿合奇县| 元氏县| 阿鲁科尔沁旗| 瓮安县| 行唐县| 延边| 北海市| 霍山县| 淮北市| 塘沽区| 弥勒县| 怀远县| 承德县| 色达县| 星子县| 特克斯县| 山东省| 陆良县| 霍林郭勒市| 闽清县| 沾益县| 富蕴县| 翁牛特旗| 上栗县| 民权县| 宣恩县| 西畴县|