【 tulaoshi.com - 编程语言 】
                             
                              扫描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(threadCount30)  
  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(threadCount0)  
  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 ; i7; 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));  
  }  
  }