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

来源:本站
导读:目前正在解读《扫描整个网段的多线程程序》的相关信息,《扫描整个网段的多线程程序》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《扫描整个网段的多线程程序》的详细说明。
简介:介绍扫描整个网段的多线程程序

扫描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));

}

}

提醒:《扫描整个网段的多线程程序》最后刷新时间 2024-03-14 01:04:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《扫描整个网段的多线程程序》该内容的真实性请自行鉴别。