test,read IP



          import java.io.*;
          import java.net.InetAddress;
          import java.util.*;

          public class ReadIp {
              static public HashMap ping; // ping 后的結果集

              public HashMap getPing() { // 用來得到ping后的結果集
                  return ping;
              }

              // 當前線程的數量, 防止過多線程摧毀電腦
              static int threadCount = 0;

              public ReadIp() {
                  ping = new HashMap();
              }

              public void Ping(String ip) throws Exception {
                  // 最多30個線程
                  while (threadCount > 30)
                      Thread.sleep(50);
                  threadCount += 1;
                  PingIp p = new PingIp(ip);
                  p.start();
              }

              public void PingAll() throws Exception {
                  // 首先得到本機的IP,得到網段
                  
          //InetAddress host = InetAddress.getLocalHost();
                  
          //InetAddress host = InetAddress.getByName(null);
                  InetAddress host = InetAddress.getByName("127.0.0.1");
                  String hostAddress = host.getHostAddress();
                  int k = 0;
                  k = hostAddress.lastIndexOf(".");
                  String ss = hostAddress.substring(0, k + 1);
                  for (int i = 1; i <= 255; i++) { // 對所有局域網Ip
                      String iip = ss + i;
                      Ping(iip);
                  }

                  // 等著所有Ping結束
                  while (threadCount > 0)
                      Thread.sleep(50);
              }

              public static void main(String[] args) throws Exception {
                  ReadIp ip = new ReadIp();
                  ip.PingAll();
                  Set entries = ping.entrySet();
                  Iterator iter = entries.iterator();

                  String k;
                  while (iter.hasNext()) {
                      Map.Entry entry = (Map.Entry) iter.next();
                      String key = (String) entry.getKey();
                      String value = (String) entry.getValue();
                      
                      if (value.equals("true"))
                          System.out.println(key + "-->" + value);
                  }
              }

              class PingIp extends Thread {
                  public String ip; // IP

                  public PingIp(String ip) {
                      this.ip = ip;
                  }

                  public void run() {
                      try {
                          Process p = Runtime.getRuntime().exec(
                                  "ping " + ip + " -w 300 -n 1");
                          InputStreamReader ir = new InputStreamReader(p.getInputStream());
                          LineNumberReader input = new LineNumberReader(ir);
                          // 讀取結果行
                          for (int i = 1; i < 7; i++)
                              input.readLine();
                          String line = input.readLine();

                          if (line.length() < 17
                                  || line.substring(8, 17).equals("timed out"))
                              ping.put(ip, "false");
                          else
                              ping.put(ip, "true");
                          
                          // 線程結束
                          threadCount -= 1;
                      } catch (IOException e) {
                      }
                  }
              }
          }

          posted on 2012-07-09 00:32 佳明 閱讀(85) 評論(0)  編輯  收藏 所屬分類: 代碼


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          留言簿

          隨筆分類

          文章分類

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 吉木萨尔县| 福贡县| 饶平县| 宣化县| 虹口区| 樟树市| 伊金霍洛旗| 迁安市| 宜良县| 海阳市| 江华| 蒙城县| 揭东县| 会宁县| 长泰县| 临泉县| 渑池县| 平和县| 漠河县| 临海市| 五原县| 山阳县| 罗定市| 连城县| 台北市| 韩城市| 永泰县| 榆林市| 南京市| 昌宁县| 厦门市| 子长县| 凤城市| 吴旗县| 西丰县| 望江县| 孟津县| 银川市| 河南省| 堆龙德庆县| 江北区|