java 求主機IP地址及其相對應的子網路遮罩

來源:互聯網
上載者:User

標籤:java   ip地址   子網路遮罩   

不多說,直接上代碼。
package com.ckw.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;import java.util.*;import java.util.Map.Entry;public class TestOfSubNetMask {    Map<String, String> map = new HashMap<String, String>(); String ipAddress; String subNetMask; boolean flag = false; //用來標記一對IP地址跟子網路遮罩 (位置相鄰的即為一對)  //擷取相對應IP地址的子網路遮罩 public void getIPAddressAndMask() {   String os = System.getProperty("os.name");   if (os != null && os.startsWith("Windows")) {   try {     String command = "cmd.exe /c ipconfig /all";  Process p = Runtime.getRuntime().exec(command);    BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), "gb2312"));    String line;      System.out.println("---------------------------------------------------------------"); while ((line = br.readLine()) != null) {    System.out.println(line);            //這句可以省略,主要是為了把所有的資訊列印出來方便對比 /*  * 獲得機器IP地址   * 在以“IPv4”開頭的那一行擷取ip地址,英文版是以“IP Address”開頭  * 格式為:  * IPv4 地址 . . . . . . . . . . . . : 10.10.116.132(首選)<span style="white-space:pre"></span>//見doc下的命令輸出  */ if (line.indexOf("IPv4 地址") > 0 || line.indexOf("IP Address") > 0) {   int index = line.indexOf(":");   index += 2;     ipAddress = line.substring(index);    //去掉漢字    “10.10.116.132(首選)”<span style="white-space:pre"></span> int i; char [] array = ipAddress.toCharArray(); for(i=0; i<array.length; i++){ if(array[i]!='.' && (array[i]<'0'||array[i]>'9')) break; } ipAddress = ipAddress.substring(0, i);  flag = true;  //存在IP地址,必存在其相應的子網路遮罩 }            /*  * 獲得機器子網路遮罩   * 在以“子網路遮罩”開頭的那一行擷取子網路遮罩,英文版是以“Subnet Mask”開頭  * 格式為:  * 子網路遮罩  . . . . . . . . . . . . : 255.255.255.192  */ if (flag==true && (line.indexOf("子網路遮罩 ") > 0 || line.indexOf("Subnet Mask") > 0)) {     int index = line.indexOf(":");       index += 2;       subNetMask = line.substring(index);      flag = false;  //消耗掉  map.put(ipAddress, subNetMask); }       }    br.close();     System.out.println("---------------------------------------------------------------"); } catch (IOException e) {  e.printStackTrace();  }    }     }    //主函數測試   public static void main(String args[]){  TestOfSubNetMask test = new TestOfSubNetMask(); test.getIPAddressAndMask();  Map<String, String> map = test.map; Iterator<Entry<String, String>> i = map.entrySet().iterator(); while(i.hasNext()){ Entry<String, String> e = i.next(); String ipAddress = e.getKey(); String subNetMask = e.getValue(); System.out.println("IP 地  址:" + ipAddress); System.out.println("子網路遮罩:" + subNetMask); } } }       


結果為:

---------------------------------------------------------------Windows IP 配置   主機名稱  . . . . . . . . . . . . . : DADI   主 DNS 尾碼 . . . . . . . . . . . :    節點類型  . . . . . . . . . . . . : 混合   IP 路由已啟用 . . . . . . . . . . : 否   WINS 代理已啟用 . . . . . . . . . : 否無線區域網路適配器 無線網路串連 29:   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Microsoft Virtual WiFi Miniport Adapter #26   物理地址. . . . . . . . . . . . . : 22-16-D8-C9-A3-B2   DHCP 已啟用 . . . . . . . . . . . : 否   自動設定已啟用. . . . . . . . . . : 是   本地連結 IPv6 地址. . . . . . . . : fe80::89eb:f7f1:e6b7:6133%74(首選)   <span style="color:#ff0000;"> IPv4 地址 . . . . . . . . . . . . : 172.17.31.1(首選)</span>    <span style="color:#ff0000;">子網路遮罩  . . . . . . . . . . . . : 255.255.0.0</span>   預設閘道. . . . . . . . . . . . . :    DHCPv6 IAID . . . . . . . . . . . : 1512183512   DHCPv6 用戶端 DUID  . . . . . . . : 00-01-00-01-19-03-EF-D5-08-60-6E-DC-A7-B7   DNS 伺服器  . . . . . . . . . . . : fec0:0:0:ffff::1%1                                       fec0:0:0:ffff::2%1                                       fec0:0:0:ffff::3%1   TCPIP 上的 NetBIOS  . . . . . . . : 已啟用無線區域網路適配器 無線網路串連:   媒體狀態  . . . . . . . . . . . . : 媒體已斷開   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Qualcomm Atheros AR9485 Wireless Network Adapter   物理地址. . . . . . . . . . . . . : 20-16-D8-C9-A3-B2   DHCP 已啟用 . . . . . . . . . . . : 是   自動設定已啟用. . . . . . . . . . : 是乙太網路適配器 本地串連:   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Realtek PCIe GBE Family Controller   物理地址. . . . . . . . . . . . . : 08-60-6E-DC-A7-B7   DHCP 已啟用 . . . . . . . . . . . : 是   自動設定已啟用. . . . . . . . . . : 是   本地連結 IPv6 地址. . . . . . . . : fe80::c0c9:c8b6:4003:7976%12(首選)    <span style="color:#ff0000;">IPv4 地址 . . . . . . . . . . . . : 10.10.116.132(首選)    子網路遮罩  . . . . . . . . . . . . : 255.255.255.192</span>   獲得租約的時間  . . . . . . . . . : 2015年7月18日 23:01:04   租約到期的時間  . . . . . . . . . : 2015年7月25日 23:01:02   預設閘道. . . . . . . . . . . . . : 10.10.116.129   DHCP 伺服器 . . . . . . . . . . . : 222.200.98.70   DHCPv6 IAID . . . . . . . . . . . : 252207214   DHCPv6 用戶端 DUID  . . . . . . . : 00-01-00-01-19-03-EF-D5-08-60-6E-DC-A7-B7   DNS 伺服器  . . . . . . . . . . . : 202.96.128.86                                       202.116.128.1   TCPIP 上的 NetBIOS  . . . . . . . : 已啟用隧道適配器 本地串連* 37:   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Teredo Tunneling Pseudo-Interface   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0   DHCP 已啟用 . . . . . . . . . . . : 否   自動設定已啟用. . . . . . . . . . : 是   IPv6 地址 . . . . . . . . . . . . : 2001:0:9d38:6ab8:aa:e4df:48c0:88c7(首選)    本地連結 IPv6 地址. . . . . . . . : fe80::aa:e4df:48c0:88c7%66(首選)    預設閘道. . . . . . . . . . . . . : ::   TCPIP 上的 NetBIOS  . . . . . . . : 已禁用隧道適配器 6TO4 Adapter:   媒體狀態  . . . . . . . . . . . . : 媒體已斷開   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0   DHCP 已啟用 . . . . . . . . . . . : 否   自動設定已啟用. . . . . . . . . . : 是隧道適配器 Reusable Microsoft 6To4 Adapter:   媒體狀態  . . . . . . . . . . . . : 媒體已斷開   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter #2   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0   DHCP 已啟用 . . . . . . . . . . . : 否   自動設定已啟用. . . . . . . . . . : 是隧道適配器 本地串連* 17:   媒體狀態  . . . . . . . . . . . . : 媒體已斷開   串連特定的 DNS 尾碼 . . . . . . . :    描述. . . . . . . . . . . . . . . : Microsoft 6to4 Adapter #3   物理地址. . . . . . . . . . . . . : 00-00-00-00-00-00-00-E0   DHCP 已啟用 . . . . . . . . . . . : 否   自動設定已啟用. . . . . . . . . . : 是//部分已省略。。。。。。---------------------------------------------------------------
//這才是主要的輸出結果<span style="color:#000099;">IP 地  址:10.10.116.132子網路遮罩:255.255.255.192IP 地  址:172.17.31.1子網路遮罩:255.255.0.0</span>


分析:紅色為要抓取的IP地址跟子網路遮罩,藍色為最後抓取的結果。下面附上doc下的ipconfig結果對比



著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

java 求主機IP地址及其相對應的子網路遮罩

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.