<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    千里冰封
    JAVA 濃香四溢
    posts - 151,comments - 2801,trackbacks - 0
    在我們?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)卡的物理地址.

    代碼如下:
    /*
     * 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)。



    盡管千里冰封
    依然擁有晴空

    你我共同品味JAVA的濃香.
    posted on 2007-09-27 09:22 千里冰封 閱讀(4324) 評(píng)論(16)  編輯  收藏 所屬分類: JAVASE

    FeedBack:
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 10:31 | BeanSoft
    支持一下的.  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 10:41 | zht
    不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 11:11 | 冷面閻羅
    對(duì)多個(gè)網(wǎng)卡只能讀取一個(gè)來(lái)  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 11:28 | 千里冰封
    呵呵,那是,對(duì)于多個(gè)的話,也可以使用命令一個(gè)一個(gè)得到  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 11:31 | t
    貌似以前在哪見(jiàn)到過(guò)  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 11:33 | 千里冰封
    是嗎?
    當(dāng)然不可能就我一個(gè)人寫得到網(wǎng)卡的地址了,別人也會(huì)寫,但是實(shí)現(xiàn)的細(xì)節(jié)不一定一樣  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址
    2007-09-27 11:43 | t
    實(shí)現(xiàn)的細(xì)節(jié)確實(shí)不一樣,呵呵。  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(window和Linux)[未登錄](méi)
    2007-09-27 12:22 | 阿蜜果
    恩,不錯(cuò),不過(guò)個(gè)人覺(jué)得最好采用bat方式,通過(guò)java來(lái)調(diào)用bat,以后有改動(dòng)容易點(diǎn)
    我也使用過(guò)它來(lái)調(diào)用Windows和Linux的本地接口,可惜的是不跨平臺(tái)。
    有點(diǎn)麻煩  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-27 12:31 | 千里冰封
    @阿蜜果
    呵呵, bat只有WINDOWS下才有用,所以只能起動(dòng)系統(tǒng)相關(guān)的進(jìn)程了,呵呵,如果調(diào)用本地方法的話,還需要加一個(gè)dll或者so文件才能使用.:)歡迎經(jīng)常來(lái)小屋坐坐  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)[未登錄](méi)
    2007-09-27 12:50 | 阿蜜果
    @ 千里冰封
    這個(gè)我知道,呵呵,在Windows下用bat,Linux下用shell腳本,以后如果有什么改動(dòng)應(yīng)該容易點(diǎn)。一點(diǎn)建議:)
    最近更新blog好勤快阿
    嘻嘻  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-27 12:51 | 千里冰封
    @阿蜜果
    呵呵,那是,方便了一些,女生搞JAVA的不容易啊,以后還要多向你學(xué)習(xí)哦  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-27 13:10 | inx
    這個(gè)程序靠字符串搜索獲得MAC ADDRESS 太不可靠了;
    要多考慮不同操作系統(tǒng)平臺(tái)的, 還有中文/英文環(huán)境;
    比如有的返回是
    eth1 Link encap:Ethernet HWaddr 00:14:5E:e3:BE:2E

    LZ 的程序就出錯(cuò)了  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-27 13:12 | 千里冰封
    說(shuō)得很好,我在程序里面也說(shuō)了,我那個(gè)是中文LINUX的輸出,如果是英文,把"硬件地址"改為"Ethernet HWaddr"就可以了,如果不這樣的話,就只能調(diào)用本地方法直接獲得了
      回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-27 13:22 | 死循環(huán)
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2007-09-30 16:22 | 1shou
    我做的時(shí)候 是用 jni 寫了一個(gè) c++ 類,,讀 取 網(wǎng)卡 MAC CPU ID 硬 盤編號(hào),, 呵呵,,只是發(fā)現(xiàn)很不穩(wěn)定。  回復(fù)  更多評(píng)論
      
    # re: JAVA得到網(wǎng)卡物理地址(windows和Linux)
    2013-04-27 14:53 | zdc
    屁蛋,不用root權(quán)限無(wú)法得到正確的結(jié)果,你這程序和腳本編程有多大不同,還是用c/c++吧  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 无码av免费网站| 亚洲色www永久网站| 国产亚洲福利精品一区| 中文字幕亚洲不卡在线亚瑟| 国产国拍亚洲精品福利| 亚洲成a人一区二区三区| 亚洲M码 欧洲S码SSS222| 亚洲黄黄黄网站在线观看| 亚洲日本中文字幕一区二区三区| 亚洲精品成人区在线观看| 国产精品亚洲不卡一区二区三区| 亚洲综合最新无码专区| 中文字幕亚洲乱码熟女一区二区 | 亚州免费一级毛片| 91九色视频无限观看免费| 精品久久8x国产免费观看| 成人免费视频77777| 暖暖免费高清日本中文| 亚洲福利精品电影在线观看| 久久国产成人亚洲精品影院| 亚洲精品国产精品乱码不99 | 可以免费观看一级毛片黄a| www国产亚洲精品久久久日本| 亚洲一区二区三区高清视频| 久久狠狠爱亚洲综合影院 | 又大又粗又爽a级毛片免费看| avtt亚洲天堂| 亚洲综合熟女久久久30p| 亚洲国产成人久久综合一| 亚洲乱码一二三四区麻豆| 欧美日韩亚洲精品| free哆拍拍免费永久视频| 久久久久国产免费| 我要看免费的毛片| 亚洲日韩在线中文字幕第一页 | 日本特黄a级高清免费大片| 国产成人精品123区免费视频| 国产亚洲色婷婷久久99精品91| 亚洲va国产va天堂va久久| 亚洲Av高清一区二区三区| 精品女同一区二区三区免费播放 |