扫描整个网段的多线程程序

曾宪亮先生

曾宪亮先生

2016-02-19 18:57

图老师小编精心整理的扫描整个网段的多线程程序希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

  扫描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));
  
  }
  
  }
展开更多 50%)
分享

猜你喜欢

扫描整个网段的多线程程序

编程语言 网络编程
扫描整个网段的多线程程序

一个多线程后台扫描的程序和源代码

编程语言 网络编程
一个多线程后台扫描的程序和源代码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java 程序中的多线程

编程语言 网络编程
Java 程序中的多线程

Java多线程程序设计

Java JAVA基础
Java多线程程序设计

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何使用Java编写多线程程序

编程语言 网络编程
如何使用Java编写多线程程序

处理WinForm多线程程序时的陷阱

电脑网络
处理WinForm多线程程序时的陷阱

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

注意这11个问题保证CSS的渲染效率 (1)

注意这11个问题保证CSS的渲染效率 (1)

在Java中如何实现长时间任务

在Java中如何实现长时间任务
下拉加载更多内容 ↓