最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何在命令行中獲取指定數(shù)據(jù)

 更新時(shí)間:2020年07月30日 08:57:26   作者:勤快的懶羊羊  
這篇文章主要介紹了Java如何在命令行中獲取指定數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

1.執(zhí)行ipconfig /all獲取主機(jī)所有網(wǎng)卡信息

并分析這些字符串,提取出有效網(wǎng)卡(網(wǎng)卡名稱,mac地址,ipv4地址,掩碼,網(wǎng)關(guān),dns)

將網(wǎng)卡插入HashMap中,key是網(wǎng)卡的名稱,value是網(wǎng)卡對(duì)象(包含mac和4個(gè)邏輯地址)

請(qǐng)輸入網(wǎng)卡的名稱,程序通過map的get方法取出此名稱對(duì)應(yīng)的網(wǎng)卡對(duì)象

根據(jù)網(wǎng)卡對(duì)象執(zhí)行其方法getNetId()取出其網(wǎng)卡所在網(wǎng)絡(luò)號(hào)進(jìn)行打印

getBroadId()取出其廣播號(hào)進(jìn)行打印

2.根據(jù)網(wǎng)卡的ip和掩碼掃描所有這個(gè)子網(wǎng)中可能存在的鄰居

然后用ping ..方式進(jìn)行驗(yàn)證此鄰居是否存在,如果存在則將其加入

網(wǎng)卡的鄰居集合(HashSet)中

3.某些鄰居有可能開啟防火墻導(dǎo)致ping失敗,所以驗(yàn)證其是否存在的

恰當(dāng)方式是先ping它一下,然后用arp -a查看這個(gè)鄰居是否有arp回應(yīng)

如果存在arp條目則說明這個(gè)鄰居是存在的.

代碼實(shí)例

package day2020072501;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Zzbds {

  public static String exeCmd(String commandStr) {
    BufferedReader br = null;
    try {
      Process p = Runtime.getRuntime().exec(commandStr);
      br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line = null;
      StringBuilder sb = new StringBuilder();
      while ((line = br.readLine()) != null) {
        sb.append(line + "\n");
      }
      // System.out.println(sb.toString());
      return sb.toString();
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (br != null) {
        try {
          br.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return commandStr;
  }

  public static void main(String[] args) {
    String str = exeCmd("ipconfig /all");
    String expr = "(.+適配器 +.+)\\:"; // 找到所有網(wǎng)卡名字
    HashMap<NetInfo, String> mp = new HashMap<>(); // HashMap存儲(chǔ)信息

    Pattern pt = Pattern.compile(expr); // 配對(duì) P,和正則匹配
    Matcher mt = pt.matcher(str); // 開始匹配源字符串 matcher
    System.out.println("\n==========================");

    int MacIndex = 0;// 記錄網(wǎng)卡
    while (mt.find()) {
      MacIndex++;
      System.out.println(mt.group(1));
    }
    System.out.println("\n共" + MacIndex + "個(gè)網(wǎng)卡");
    if (MacIndex == 0) {
      System.out.println("沒有網(wǎng)卡");
      return;
    }

    System.out.println("\n==========================");

    Matcher mt1 = pt.matcher(str); // 開始匹配源字符串 matcher
    // System.out.println("可用網(wǎng)卡");
    int MacUse = 0;// 可以使用的網(wǎng)卡數(shù)量
    String[] MacArr = new String[10];// 存儲(chǔ)網(wǎng)卡數(shù)組(可用網(wǎng)卡)
    while (mt1.find()) { // 循環(huán)遍歷所有網(wǎng)卡
      // 判斷是否可用
      if (NetWorkUtil.NetWorkavailable(mt1.group())) {
        MacArr[MacUse] = mt1.group();
        MacUse++;
        // System.out.println(mt1.group());
      }
    }
    for (int i = 0; i < MacUse; i++) {
      System.out.println(MacArr[i]);
    }
    System.out.println("\n可用網(wǎng)卡共:" + MacUse + "個(gè)");
    System.out.println("\n==========================\n");

    // System.out.println("------------------------------------");
    // 打印出可用的網(wǎng)卡信息
    for (int j = 0; j < MacUse; j++) { // 使用(數(shù)組)循環(huán),打印所有可用網(wǎng)卡的所有信息
      String MacInfo = "";// 可用的網(wǎng)卡信息
      String expr1 = "(" + MacArr[j] + "([\\d\\D]*))";
      System.out.println("\n第" + (j + 1) + "個(gè)是:" + MacArr[j]);
      Pattern pt1 = Pattern.compile(expr1);
      Matcher mt2 = pt1.matcher(str);
      if (mt2.find()) {
        MacInfo = mt2.group(1);// 把查到的信息賦給變量MaxInfo
      }
      // System.out.println(MacInfo);
      System.out.println("---------------------可用網(wǎng)卡的具體信息如下(第" + (j + 1) + "個(gè)網(wǎng)卡)----------------");
      Pattern pt2 = Pattern.compile(" +描述(\\. +)+: (.*)");
      Matcher mt3 = pt2.matcher(MacInfo);// 網(wǎng)卡名
      Pattern pt3 = Pattern.compile(" +物理地址(\\. +)+: (.*)");
      Matcher mt4 = pt3.matcher(MacInfo);// 網(wǎng)卡地址
      Pattern pt5 = Pattern.compile(" +IPv4 地址( +\\.)+ +: +(.*)\\(");
      Matcher mt5 = pt5.matcher(MacInfo);// IP地址
      Pattern pt6 = Pattern.compile(" +子網(wǎng)掩碼( +\\.)+ +: +(.*)");
      Matcher mt6 = pt6.matcher(MacInfo);// 子網(wǎng)掩碼
      Pattern pt7 = Pattern.compile(" +默認(rèn)網(wǎng)關(guān)(\\. +)+: (.*)");
      Matcher mt7 = pt7.matcher(MacInfo);// 網(wǎng)關(guān)
      Pattern pt8 = Pattern.compile(" +DNS 服務(wù)器( +\\.)+ +: +(.*)");
      Matcher mt8 = pt8.matcher(MacInfo);// DNS

      String MacName = "";
      String MacIP = "";
      String IPV4 = "";
      String NetMask = "";
      String GateWay = "";
      String DNS = "";

      if (mt3.find() && mt4.find() && mt5.find() && mt6.find() && mt7.find() && mt8.find()) {
        MacName = mt3.group(2);
        MacIP = mt4.group(2);
        IPV4 = mt5.group(2);
        NetMask = mt6.group(2);
        GateWay = mt7.group(2);
        DNS = mt8.group(2);
        mp.put(new NetInfo(MacName,MacIP, IPV4, NetMask, GateWay, DNS), MacName);
      }
      System.out.println("網(wǎng)卡名稱:" + MacName.trim());
      System.out.println("網(wǎng)卡地址:" + MacIP.trim());
      System.out.println("IPV4地址:" + IPV4.trim());
      System.out.println("子網(wǎng)掩碼:" + NetMask.trim());
      System.out.println("默認(rèn)網(wǎng)關(guān):" + GateWay.trim());
      System.out.println("DNS地址:" + DNS.trim());

    }

    System.out.println("\n=====================使用HashMap遍歷輸出===========================");
    for (NetInfo h : mp.keySet()) {
      System.out.println("\n網(wǎng)卡名字:" + mp.get(h) + "\n" + h);
      System.out.println("\n-------------");
    }

    System.out.println("======================");
    System.out.println("請(qǐng)輸入網(wǎng)卡名:");
    //String inputMacName = new Scanner(System.in).next();//輸入網(wǎng)卡名稱
    //默認(rèn)輸入:VMware Virtual Ethernet Adapter for VMnet8

    String NetId = "";//記錄IP
    String inputMacName ="VMware Virtual Ethernet Adapter for VMnet8";
    System.out.println("您輸入的是:"+inputMacName);
    for (NetInfo h : mp.keySet()) {
      if((h.getMacName().trim()).equals(inputMacName)){
        System.out.println("\n網(wǎng)卡名字:" + mp.get(h) + "\n" + h);
        NetId = h.getIPV4();
        System.out.println("\nIP:"+NetId); //打印出此IP(后面求出網(wǎng)絡(luò)號(hào)、廣播號(hào))
      }
    }



    //分解數(shù)組
    String []netIPArr = NetId.split("\\.");
    for(int i= 0;i<netIPArr.length;i++){
      System.out.println(netIPArr[i]);
    }

    //求網(wǎng)絡(luò)號(hào):
      System.out.println("網(wǎng)絡(luò)號(hào):"+netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+0);
      System.out.println("廣播號(hào):"+netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+255);

    //訪問所有鄰居
    HashSet<String> nei = new HashSet<>();//存儲(chǔ)所有可達(dá)的鄰居
    for(int i= 1;i<5;i++){
      String str1 = exeCmd("ping "+netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+i);
      System.out.println(str1);
      //判斷是否Ping 通
      Pattern pt9 = Pattern.compile("TTL");
      Matcher mt9 = pt9.matcher(str1);
      if (mt9.find()){//如果能ping 通,直接加入到set集合內(nèi)
        //System.out.println(netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+i);
        nei.add(netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+i);//存儲(chǔ)
      }else{//如果ping 不同,使用arp 查看回應(yīng)
        String str2 = exeCmd("arp -a");
        Pattern pt10 = Pattern.compile(netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+i);
        Matcher mt10 = pt10.matcher(str2);
        if (mt10.find()){//如果arp 返回?cái)?shù)據(jù),也加入到set集合內(nèi)
          nei.add(netIPArr[0]+"."+netIPArr[1]+"."+netIPArr[2]+"."+i);//存儲(chǔ)
        }
      }
    }

    //輸出所有可達(dá)的鄰居
    System.out.println("所有可達(dá)的鄰居:");
    for(String s : nei){
      System.out.println(s);
    }

  }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MybatisPlus分頁(yè)查詢與多條件查詢介紹及查詢過程中空值問題的解決

    MybatisPlus分頁(yè)查詢與多條件查詢介紹及查詢過程中空值問題的解決

    mybatisplus是個(gè)很好用的插件,相信小伙伴們都知道,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus實(shí)現(xiàn)分頁(yè)查詢與多條件查詢介紹及查詢過程中空值問題的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(40)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(40)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Android開發(fā)Activity管理工具類的操作方法

    Android開發(fā)Activity管理工具類的操作方法

    這篇文章主要介紹了Android開發(fā)Activity管理工具類,下面是一個(gè)完整的Activity管理工具類實(shí)現(xiàn),可以幫助你管理應(yīng)用中的所有Activity,方便一鍵退出應(yīng)用、獲取當(dāng)前Activity等操作,需要的朋友可以參考下
    2021-02-02
  • 什么是RESTful?API,有什么作用

    什么是RESTful?API,有什么作用

    提到RESTful?API大家勢(shì)必或多或少聽說過,但是什么是RESTful?API??如何理解RESTful?API?呢?今天咱們就來聊聊這個(gè)RESTful?API
    2023-11-11
  • 深入學(xué)習(xí)java8?中的CompletableFuture

    深入學(xué)習(xí)java8?中的CompletableFuture

    本文主要介紹了java8中的CompletableFuture,CompletableFuture實(shí)現(xiàn)了CompletionStage接口和Future接口,前者是對(duì)后者的一個(gè)擴(kuò)展,增加了異步回調(diào)、流式處理、多個(gè)Future組合處理的能力,使Java在處理多任務(wù)的協(xié)同工作時(shí)更加順暢便利,下文需要的朋友可以參考一下
    2022-05-05
  • Java實(shí)現(xiàn)List去重的幾種方法總結(jié)

    Java實(shí)現(xiàn)List去重的幾種方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Java中List去重的幾種常用方法總結(jié),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)和參考價(jià)值,需要的小伙伴可以了解一下
    2023-09-09
  • Java實(shí)現(xiàn)撲克牌洗牌和發(fā)牌

    Java實(shí)現(xiàn)撲克牌洗牌和發(fā)牌

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)撲克牌洗牌和發(fā)牌,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息

    Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息

    這篇文章主要介紹了Logger.error打印錯(cuò)誤異常的詳細(xì)堆棧信息,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • springboot整合netty框架的方式小結(jié)

    springboot整合netty框架的方式小結(jié)

    Netty 是一個(gè)基于NIO的客戶、服務(wù)器端編程框架,使用Netty 可以確保你快速和簡(jiǎn)單的開發(fā)出一個(gè)網(wǎng)絡(luò)應(yīng)用,這篇文章主要介紹了springboot整合netty框架的方式小結(jié),需要的朋友可以參考下
    2022-06-06
  • java項(xiàng)目中classpath指向哪里

    java項(xiàng)目中classpath指向哪里

    這篇文章介紹了java項(xiàng)目中classpath指向哪里及工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12

最新評(píng)論

南部县| 青川县| 栾城县| 新泰市| 新竹县| 绥芬河市| 奎屯市| 南阳市| 珠海市| 勐海县| 祁连县| 临洮县| 恩施市| 温州市| 武宣县| 缙云县| 务川| 姜堰市| 博野县| 西青区| 辰溪县| 霍林郭勒市| 手机| 新余市| 西充县| 临沭县| 久治县| 广西| 乌兰浩特市| 桦川县| 花垣县| 缙云县| 西乌| 辛集市| 玛多县| 昭通市| 黄平县| 永寿县| 马龙县| 申扎县| 铅山县|