新聞中心

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

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

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

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

        本文引用地址: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來說,要強大一些,它可以指定一個環(huán)境 變量,并指定程序運行時的目錄空間,并且也可以得到程序運行時的環(huán)境變量.因為ipconfig這個命令已經是system32里面的,所以不需要我們另外再設環(huán)境變量或者指定程序的運行時目錄空間.我們直接用就可以了,然后得到進程的輸出流,就可以分析出我們所需要的東西了.是不是挺簡單的呢

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



        關鍵詞:

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 临桂县| 宣武区| 金塔县| 黄大仙区| 闵行区| 永清县| 汝阳县| 库伦旗| 镇巴县| 庆云县| 白银市| 界首市| 夹江县| 大化| 阿拉善盟| 石首市| 平江县| 潞西市| 甘泉县| 礼泉县| 静海县| 青州市| 阜南县| 泰和县| 绥芬河市| 马鞍山市| 徐汇区| 乌恰县| 萨迦县| 西峡县| 睢宁县| 罗甸县| 宜章县| 繁峙县| 民乐县| 定陶县| 三原县| 兰西县| 天门市| 安西县| 永吉县|