国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java 獲取本機的IP與MAC地址實現(xiàn)詳解

2019-11-26 13:47:50
字體:
供稿:網(wǎng)友

 Java 獲取本機的IP與MAC地址

有些機器有許多虛擬的網(wǎng)卡,獲取IP地址時會出現(xiàn)一些意外,所以需要一些驗證:

// 獲取mac地址  public static String getMacAddress() {    try {      Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();      byte[] mac = null;      while (allNetInterfaces.hasMoreElements()) {        NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();        if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {          continue;        } else {          mac = netInterface.getHardwareAddress();          if (mac != null) {            StringBuilder sb = new StringBuilder();            for (int i = 0; i < mac.length; i++) {              sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));            }            if (sb.length() > 0) {              return sb.toString();            }          }        }      }    } catch (Exception e) {      _logger.error("MAC地址獲取失敗", e);    }    return "";  }  // 獲取ip地址  public static String getIpAddress() {    try {      Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();      InetAddress ip = null;      while (allNetInterfaces.hasMoreElements()) {        NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();        if (netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()) {          continue;        } else {          Enumeration<InetAddress> addresses = netInterface.getInetAddresses();          while (addresses.hasMoreElements()) {            ip = addresses.nextElement();            if (ip != null && ip instanceof Inet4Address) {              return ip.getHostAddress();            }          }        }      }    } catch (Exception e) {      _logger.error("IP地址獲取失敗", e);    }    return "";  }

  以上的代碼中

netInterface.isLoopback() || netInterface.isVirtual() || !netInterface.isUp()

    能很好地把一些非物理網(wǎng)卡或無用網(wǎng)上過濾掉,然后再取網(wǎng)上的IPV4地址即可。

     說到這里,還有一些常用的:

    1、獲取當前機器的操作系統(tǒng)

 public final static String WIN_OS = "WINDOWS";  public final static String MAC_OS = "MAC";  public final static String LINUX_OS = "LINUX";  public final static String OTHER_OS = "OTHER";  public static String getOS() {    if (SystemUtils.IS_OS_WINDOWS){      return WIN_OS;    }    if (SystemUtils.IS_OS_MAC || SystemUtils.IS_OS_MAC_OSX){      return MAC_OS;    }    if (SystemUtils.IS_OS_UNIX){      return LINUX_OS;    }    return OTHER_OS;  }

    2、設(shè)置HTTP訪問代理

/**   * 設(shè)置http代理   */  public static void setHttpProxy() {    Properties prop = System.getProperties();    // 設(shè)置http訪問要使用的代理服務(wù)器的地址    prop.setProperty("http.proxyHost", HTTP_PROXY_HOST);    // 設(shè)置http訪問要使用的代理服務(wù)器的端口    prop.setProperty("http.proxyPort", HTTP_PROXY_PORT);    // 設(shè)置不需要通過代理服務(wù)器訪問的主機,可以使用*通配符,多個地址用|分隔    prop.setProperty("http.nonProxyHosts", RemoteConfig.PROXT_FILTER_DOMAIN);  }    /**   * 移除http代理   */  public static void removeHttpProxy() {    Properties prop = System.getProperties();    prop.remove("http.proxyHost");    prop.remove("http.proxyPort");    prop.remove("http.nonProxyHosts");  }

    在應(yīng)用啟動時,訪問HTTP請求前,設(shè)置好就行。當然,http.nonProxyHosts可以不用設(shè)置,表示所有的HTTP請求都走代理。

    至于HTTPS代理,類似可以這樣設(shè)置:

System.setProperty("https.proxyHost", "HTTP_PROXY_HOST");
System.setProperty("https.proxyPort", "HTTP_PROXY_PORT");

以上就是Java 獲取本機IP和 MAC的實例,有需要的朋友可以參考下,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌拉特中旗| 正定县| 定兴县| 浦城县| 丹江口市| 宜宾县| 望谟县| 望江县| 青龙| 女性| 桑日县| 克什克腾旗| 贡嘎县| 尼玛县| 广南县| 邮箱| 长顺县| 喜德县| 封丘县| 苍南县| 柘荣县| 山东| 景德镇市| 广州市| 黎川县| 富川| 开平市| 安顺市| 阿拉善右旗| 嘉义县| 仪征市| 益阳市| 石林| 英吉沙县| 凌海市| 稻城县| 开化县| 巴中市| 碌曲县| 涿鹿县| 集贤县|