描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. 利用Ping比较愚蠢, 但是相对简单些
2. 如果Ping 成功后, 用nbtstat还可以得到主机名, 当前用户名, MAC地址...一切尽在掌握中 :)
分享到:
相关推荐
《MultipleThreadPortScan跨网段多线程端口扫描程序源码详解》 在网络安全领域,端口扫描是一项基础且重要的技术,它可以帮助我们发现网络服务的状态,检测潜在的安全漏洞。"MultipleThreadPortScan"是一个专门针对...
描述中的“含源码”意味着提供了实现这一功能的程序代码,可能使用C#、Java、Python或其他编程语言编写,让读者能够深入理解并实践多线程扫描的实现。 【标签】:网络应用 “网络应用”这个标签表明了这个话题与...
在本主题"多任务网段扫描练习"中,我们将探讨如何利用多线程技术来提高网段扫描的效率,同时根据扫描到的IP地址解析出对应的主机域名。这涉及到的知识点包括网络编程、多线程处理以及IP与域名的转换。 首先,我们要...
本文将深入探讨使用C#语言开发的多线程局域网扫描器,该工具允许用户以单线程、多线程或后台线程模式扫描局域网内的所有计算机。 首先,我们要理解C#中的线程机制。线程是程序执行的基本单元,它允许同一时间内执行...
本项目"c#多线程程序设计,IP地址dns域名解析"正是结合了这两个核心概念,通过创建Windows应用程序来实现高效地扫描网络中的计算机,并进行DNS域名解析。 首先,我们需要理解多线程的概念。在单线程环境中,程序...
"多线程扫描网段内可用IP"是一个这样的过程,它利用多线程技术提高扫描速度,有效地遍历指定网络接口(网卡)所在网段内的所有可能IP地址,寻找活动的主机。这一技术尤其适用于大型网络环境,可以快速地获取网络拓扑...
本项目以"C#多线程端口扫描"为主题,旨在设计一个Windows应用程序,用于探测局域网内特定主机的开放TCP和UDP端口。以下将详细介绍实现这个功能所需的关键知识点。 1. **多线程基础**:在C#中,`Thread`类是进行多...
在本实践项目"A.2 多任务网段扫描练习"中,主要涉及的是C#语言在网络编程中的应用,特别是IP地址处理和多线程技术。下面将详细解析这些知识点: 1. **IP地址处理**: - 在描述中提到的"如果192.168.1.的输入后面少...
综上所述,"MFC实现端口扫描,网段IP扫描"涉及到的主要知识点包括:MFC基础,套接字编程,TCP/IP协议,多线程编程,以及网络扫描策略。通过这些技术,开发者可以构建高效、灵活的网络诊断工具。
用了一个礼拜时间做了一个端口扫描程序 从扫描同一个网段的IP开始 逐步添加功能 现在还具有了扫描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 扫描同一网段的IP主要是用SHELL方法 ...
总的来说,通过这个《IP多任务网段扫描器》项目,我们可以学习到C#中的多线程编程、异步操作、网络通信API的使用,以及如何组织和设计高效的网络应用。对于想要深入理解C#网络编程的初学者,这是一个非常有价值的...
- **并发扫描**:为了提高扫描效率,可以使用多线程或异步I/O模型,同时扫描多个目标。 - **避免被检测**:网络扫描可能会被视为攻击行为,因此应合理控制扫描速度,避免引起不必要的注意。 - **合法性和道德问题...
在C#中,多线程允许程序同时执行多个独立的任务,提高了程序的并发性和效率。当我们需要快速获取大量IP的可达性时,可以创建多个线程,每个线程负责ping一个或几个IP地址,从而加快整个过程。这可以通过System....
【线程与线程池的概念】 ...以上就是利用单线程、多线程、线程池来设计扫描网络IP的程序设计要点,以及实现步骤和代码结构的解析。这样的设计可以高效地遍历大量IP,提高扫描效率,并确保用户界面的流畅性。
TCP扫描支持多线程,能对单个指定的主机进行扫描或对 指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口 进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议...
### Java扫描网段:深入解析与实践 #### 核心知识点概述 在IT网络管理与安全领域,网络扫描是一项基础而关键的技术,用于发现网络中的活动主机、端口和服务,以便进行资产管理、漏洞评估和安全审计。Java作为一种...
VB.NET 多线程TCP端口扫描工具,使用前请输入要扫描的网段IP和端口,本程序可将扫描到的开放端口数量显示在窗口中,扫描时应用了多线程技术,扫描时显示当前线程数,适时显示扫描进度和扫描时间,以毫秒计时,扫描...
为了提高扫描速度,可以使用多线程或多任务技术,如`Task`类,同时处理多个IP地址。此外,还可以使用异步编程,如`async/await`关键字,以减少阻塞。 通过以上步骤,你可以构建一个基本的C#网段扫描程序。当然,...