<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > JAVA得到網(wǎng)卡物理地址(Windows和Linux)

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

          作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò) 收藏

          在我們?cè)趯懗绦虻倪^(guò)程中,有些時(shí)候需要知道一些電腦的硬件信息,比如我們寫一些需要注冊(cè)的程序的時(shí)候,就需要得到某個(gè)電腦特定的信息,一般來(lái)說(shuō),網(wǎng)卡的物理地址是不會(huì)重復(fù)的,我們正好可以用它來(lái)做為我們識(shí)別一臺(tái)電腦的標(biāo)志.那如何得到網(wǎng)卡的物理地址呢?我們可以借助于ProcessBuilder這個(gè)類,這個(gè)類是JDK1.5新加的,以前也可以用Runtime.exce這個(gè)類.在此我們將演示一下如何在Windows和Linux環(huán)境下得到網(wǎng)卡的物理地址.

          本文引用地址:http://www.ex-cimer.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這個(gè)類,這個(gè)類比起以前用Runtime.exec來(lái)說(shuō),要強(qiáng)大一些,它可以指定一個(gè)環(huán)境 變量,并指定程序運(yùn)行時(shí)的目錄空間,并且也可以得到程序運(yùn)行時(shí)的環(huán)境變量.因?yàn)閕pconfig這個(gè)命令已經(jīng)是system32里面的,所以不需要我們另外再設(shè)環(huán)境變量或者指定程序的運(yùn)行時(shí)目錄空間.我們直接用就可以了,然后得到進(jìn)程的輸出流,就可以分析出我們所需要的東西了.是不是挺簡(jiǎn)單的呢

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



          關(guān)鍵詞:

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();