熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java實現讀取本機網卡Mac地址

2013-11-23 18:55:20  來源: Java核心技術 

  本方法主要用來限制系統在其他的機器上運行其實原理簡單的很沒有調用第三方插件代碼如下:

  package comusersutil;

  import    javaio*;

  import    javautil*;

  import    javautilregex*;

  public    class    NetID    {

  String    IPCONFIG_COMMAND_WIN    =    ipconfig    /all;

  boolean    realMac    =    true;

  String    unique    =    ;

  public    static    String    getMacAddress()    {

  NetID    hwid    =    new    NetID();

  return    hwidgetUnique()trim();

  }

  private    String    getUnique()    {

  String    os    =    SystemgetProperty(osname);

  if    (osstartsWith(Windows))    {

  return    getUniqueWindows();

  }else    {

  return    ;

  }

  }

  private    String    getUniqueWindows()    {

  String    ipConfigResponse    =    null;

  try    {

  ipConfigResponse    =    runConsoleCommand(IPCONFIG_COMMAND_WIN);

  }

  catch    (IOException    e)    {

  eprintStackTrace();

  }

  StringTokenizer    tokenizer    =    new    StringTokenizer(ipConfigResponse    \n);

  while    (tokenizerhasMoreTokens())    {

  String    line    =    tokenizernextToken()trim();

  int    macAddressPosition    =    lineindexOf(:);

  if    (macAddressPosition    <=    )    {

  continue;

  }

  String    macAddressCandidate    =    linesubstring(macAddressPosition    +    )

  trim();

  if    (isMacAddWin(macAddressCandidate))    {

  if    (realMac    ==    true)    {

  generateUnique(macAddressCandidate);

  }

  else    {

  realMac    =    true;

  }

  }

  }

  return    unique;

  }

  private    String    runConsoleCommand(String    command)    throws    IOException    {

  Process    p    =    RuntimegetRuntime()exec(command);

  InputStream    stdoutStream    =    new    BufferedInputStream(pgetInputStream());

  StringBuffer    buffer    =    new    StringBuffer();

  while    (true)    {

  int    c    =    stdoutStreamread();

  if    (c    ==    )    {

  break;

  }

  bufferappend(    (char)    c);

  }

  String    outputText    =    buffertoString();

  stdoutStreamclose();

  return    outputText;

  }

  private    boolean    isMacAddWin(String    macAddressCandidate)    {

  Pattern    macPattern    =    pile([afAF]{}[afAF]{}[afAF]{}[afAF]{}[afAF]{}[afAF]{});

  Matcher    m    =    macPatternmatcher(macAddressCandidate);

  return    mmatches();

  }

  private    boolean    isMacAddOSX(String    macAddressCandidate)    {

  if    (macAddressCandidatelength()    !=    )    {

  return    false;

  }

  else    {

  return    true;

  }

  }

  private    void    generateUnique(String    macAddress)    {

  if    (unique    ==    )    {

  unique    +=    macAddress;

  }

  else    {

  unique    +=    #;

  unique    +=    macAddress;

  }

  }

  public    static    void    main(String [] args)    {

  Systemoutprintln(NetIDgetMacAddress());

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25985.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.