程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> 掃描整個網段的多線程程序

掃描整個網段的多線程程序

編輯:JAVA編程入門知識

  掃描500個IP10秒鐘左右, 一個IP等待0.3秒
  
  用Java寫的過程編程,供參考:
  
  package steeven;
  
  import java.sql.*;
  
  import java.io.*;
  
  import java.util.*;
  
  import java.text.*;
  
  import javax.servlet.http.*;
  
  public class Ip extends Common implements Runnable{
  
  public String ip; // IP, 用戶名, 主機名
  
  ResultSet list; // 分頁顯示的記錄集
  
  public Ip cur; // 分頁顯示的當前記錄
  
  static public Hashtable ping = new Hashtable(); //ping 後的結果集
  
  static int threadCount = 0; //當前線程的數量, 防止過多線程摧毀電腦
  
  public Ip() {}
  
  public Ip(String ip){
  
  this.ip=ip;
  
  Thread r = new Thread(this);
  
  r.start();
  
  }
  
  public static void Ping(String ip) throws Exception{
  
  //最多30個線程
  
  while(threadCount>30)
  
  Thread.sleep(50);
  
  threadCount +=1;
  
  Ip p = new Ip(ip);
  
  }
  
  public void PingAll() throws Exception{
  
  threadCount =0;
  
  ping = new Hashtable();
  
  while(next()) //next()對所有局域網Ip放到cur
  
  Ping(cur.ip);
  
  //等著所有Ping結束
  
  while(threadCount>0)
  
  Thread.sleep(50);
  
  }
  
  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,new Boolean(false));
  
  else
  
  ping.put(ip,new Boolean(true));
  
  //線程結束
  
  threadCount -= 1;
  
  }catch (IOException e){}
  
  }
  
  public static void main(String[] args) throws Exception{
  
  Ip ip= new Ip();
  
  ip.PingAll();
  
  java.util.Enumeration key = ping.keys();
  
  String k;
  
  while((k = (String)key.nextElement()) != null)
  
  System.out.println(k+": "+ping.get(k));
  
  }
  
  }
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved