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

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

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

    posts - 310, comments - 6939, trackbacks - 0, articles - 3
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    JAVA獲得網(wǎng)卡MAC地址

    Posted on 2007-10-12 14:07 詩(shī)特林 閱讀(3073) 評(píng)論(4)  編輯  收藏 所屬分類: Java

    前陣子看到一篇文件,JAVA得到網(wǎng)卡物理地址(windows和Linux) ,當(dāng)時(shí)覺(jué)得挺好,后來(lái)正好項(xiàng)目里有需要,就用了它,但好像有點(diǎn)問(wèn)題.因?yàn)樗遣捎霉潭ㄗ址阉?if (line.indexOf("Physical Address"!= -1)獲得MAC 地址的,后來(lái)在應(yīng)用時(shí)出了問(wèn)題,因?yàn)闆](méi)有"Physical Address"這一項(xiàng).后來(lái)在外網(wǎng)在查查了一下,后來(lái)發(fā)現(xiàn)老外有寫(xiě)一個(gè)這樣的類,可能那樣的方式更加可靠一點(diǎn).算是做個(gè)標(biāo)記.

    package sterning.queue;
    import java.net.InetAddress;
    import java.io.InputStream;
    import java.io.BufferedInputStream;
    import java.io.IOException;
    import java.text.ParseException;
    import java.util.StringTokenizer;


    public final class NetworkUtils {

      
    private final static int MACADDR_LENGTH = 17;
      
    private final static String WIN_OSNAME = "Windows";
      
    private final static String WIN_MACADDR_REG_EXP =
       
    "^[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}$";
      
    private final static String WIN_MACADDR_EXEC = "ipconfig /all";


      
    public final static String getMacAddress() throws IOException {
        String os 
    = System.getProperty("os.name");
        
    try {
          
    if (os.startsWith(WIN_OSNAME)) {
             
    return winMacAddress(winIpConfigCommand());
          }

          
    // 下面是其它的操作系統(tǒng)的代碼,省略了!
          
    //   LINUX -->    else if (os.startsWith("Linux")) { 
          
    //                
          
    //                Process p = Runtime.getRuntime().exec("ifconfig");
          
    //   MAC OSX -->  else if(os.startsWith("Mac OS X")) { 
          
    //                
          
    //                Process p = Runtime.getRuntime().exec("ifconfig");
          else {
             
    throw new IOException("OS not supported : " + os);
          }

        }

        
    catch(ParseException e) {
          e.printStackTrace();
          
    throw new IOException(e.getMessage());
        }

      }


      
    private final static String winMacAddress(String ipConfigOutput) 
            
    throws ParseException {
        String localHost 
    = null;
        
    try {
          localHost 
    = InetAddress.getLocalHost().getHostAddress();
        }

        
    catch(java.net.UnknownHostException ex) {
          ex.printStackTrace();
          
    throw new ParseException(ex.getMessage(), 0);
        }


        StringTokenizer tokenizer 
    = new StringTokenizer(ipConfigOutput, "\n");
        String lastMacAddress 
    = null;

        
    while(tokenizer.hasMoreTokens()) {
          String line 
    = tokenizer.nextToken().trim();

          
    // see if line contains IP address
          if (line.endsWith(localHost) && lastMacAddress != null{
             
    return lastMacAddress;
          }


          
    // see if line contains MAC address
          int macAddressPosition = line.indexOf(":");
          
    if(macAddressPosition <= 0continue;

          String macAddressCandidate 
    = line.substring(macAddressPosition + 1).trim();
          
    if (winIsMacAddress(macAddressCandidate)) {
             lastMacAddress 
    = macAddressCandidate;
             
    continue;
          }

        }


        ParseException ex 
    = new ParseException
           (
    "cannot read MAC address from [" + ipConfigOutput + "]"0);
        ex.printStackTrace();
        
    throw ex;
      }



      
    private final static boolean winIsMacAddress(String macAddressCandidate) {
        
    if (macAddressCandidate.length() != MACADDR_LENGTH)    return false;
        
    if (!macAddressCandidate.matches(WIN_MACADDR_REG_EXP)) return false;
        
    return true;
      }



      
    private final static String winIpConfigCommand() throws IOException {
        Process p 
    = Runtime.getRuntime().exec(WIN_MACADDR_EXEC);
        InputStream stdoutStream 
    = new BufferedInputStream(p.getInputStream());

        StringBuffer buffer
    = new StringBuffer();
        
    for (;;) {
           
    int c = stdoutStream.read();
           
    if (c == -1break;
              buffer.append((
    char)c);
        }

        String outputText 
    = buffer.toString();
        stdoutStream.close();
        
    return outputText;
      }



      
    public final static void main(String[] args) {
        
    try {
          System.out.println(
    "MAC ADDRESS");
          System.out.println(
    "  OS          : " 
             
    + System.getProperty("os.name"));
          System.out.println(
    "  IP/Localhost: " 
             
    + InetAddress.getLocalHost().getHostAddress());
          System.out.println(
    "  MAC Address : " 
             
    + getMacAddress());
        }

        
    catch(Throwable t) {
          t.printStackTrace();
        }

      }

    }


    評(píng)論

    # re: JAVA獲得網(wǎng)卡MAC地址  回復(fù)  更多評(píng)論   

    2007-10-12 23:10 by apple0668
    不錯(cuò),學(xué)習(xí)了!實(shí)際中,如果要做一個(gè)投票系統(tǒng),通過(guò)記錄pc上的網(wǎng)卡地址來(lái)防止重復(fù)刷票,鑒于操作系統(tǒng)不一樣,上面程序可以做到自動(dòng)識(shí)別操作系統(tǒng)。

    # re: JAVA獲得網(wǎng)卡MAC地址  回復(fù)  更多評(píng)論   

    2008-07-11 09:26 by Zzz
    不錯(cuò)不錯(cuò),我現(xiàn)在希望能找到如何用程序修改網(wǎng)卡的mac地址,并在5分鐘后又再次自動(dòng)恢復(fù)

    # re: JAVA獲得網(wǎng)卡MAC地址  回復(fù)  更多評(píng)論   

    2008-12-22 15:43 by 塞外野叟
    只能得到本地localhost的嗎,怎么得到客戶端的mac地址。

    # re: JAVA獲得網(wǎng)卡MAC地址  回復(fù)  更多評(píng)論   

    2009-06-20 14:18 by wyk
    不錯(cuò)
    主站蜘蛛池模板: 免费精品国产自产拍在线观看 | 亚洲XX00视频| 亚洲精品国产福利一二区| 久久亚洲av无码精品浪潮| 久久夜色精品国产亚洲AV动态图| 亚洲AV日韩AV永久无码久久| 亚洲国产高清美女在线观看| 亚洲va中文字幕| 一级毛片视频免费| 亚洲电影免费在线观看| 国产成人精品日本亚洲专区6| 亚洲爆乳无码专区www| 一本岛v免费不卡一二三区| 久久久久久久99精品免费| 一本无码人妻在中文字幕免费| 无码精品一区二区三区免费视频 | 日韩精品免费一级视频| 免费看美女让人桶尿口| 精品国产sm捆绑最大网免费站| 在线免费观看色片| 怡红院亚洲怡红院首页| 亚洲欧洲日本精品| 免费精品视频在线| 99re免费在线视频| 四虎永久成人免费影院域名| 亚洲男人天堂av| 亚洲av成本人无码网站| 免费国产99久久久香蕉| 在线观看无码的免费网站| 日日噜噜噜噜夜夜爽亚洲精品| 亚洲丰满熟女一区二区v| 特级毛片爽www免费版| 亚洲黄色免费观看| 免费夜色污私人影院在线观看| 亚洲日本va午夜中文字幕一区| 亚洲AV无码精品国产成人| 特级无码毛片免费视频尤物 | 中国在线观看免费国语版| 中文字幕中韩乱码亚洲大片 | 亚洲激情中文字幕| 国产亚洲精品免费|