`
bjxagu
  • 浏览: 165344 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

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

阅读更多

描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跨网段多线程端口扫描程序源码详解》 在网络安全领域,端口扫描是一项基础且重要的技术,它可以帮助我们发现网络服务的状态,检测潜在的安全漏洞。"MultipleThreadPortScan"是一个专门针对...

    多线程网段扫描

    描述中的“含源码”意味着提供了实现这一功能的程序代码,可能使用C#、Java、Python或其他编程语言编写,让读者能够深入理解并实践多线程扫描的实现。 【标签】:网络应用 “网络应用”这个标签表明了这个话题与...

    多任务网段扫描练习

    在本主题"多任务网段扫描练习"中,我们将探讨如何利用多线程技术来提高网段扫描的效率,同时根据扫描到的IP地址解析出对应的主机域名。这涉及到的知识点包括网络编程、多线程处理以及IP与域名的转换。 首先,我们要...

    C#多线程局域网扫描器

    本文将深入探讨使用C#语言开发的多线程局域网扫描器,该工具允许用户以单线程、多线程或后台线程模式扫描局域网内的所有计算机。 首先,我们要理解C#中的线程机制。线程是程序执行的基本单元,它允许同一时间内执行...

    c#多线程程序设计,IP地址dns域名解析

    本项目"c#多线程程序设计,IP地址dns域名解析"正是结合了这两个核心概念,通过创建Windows应用程序来实现高效地扫描网络中的计算机,并进行DNS域名解析。 首先,我们需要理解多线程的概念。在单线程环境中,程序...

    多线程扫描网段内可用IP

    "多线程扫描网段内可用IP"是一个这样的过程,它利用多线程技术提高扫描速度,有效地遍历指定网络接口(网卡)所在网段内的所有可能IP地址,寻找活动的主机。这一技术尤其适用于大型网络环境,可以快速地获取网络拓扑...

    C#多线程端口扫描

    本项目以"C#多线程端口扫描"为主题,旨在设计一个Windows应用程序,用于探测局域网内特定主机的开放TCP和UDP端口。以下将详细介绍实现这个功能所需的关键知识点。 1. **多线程基础**:在C#中,`Thread`类是进行多...

    A.2 多任务网段扫描练习

    在本实践项目"A.2 多任务网段扫描练习"中,主要涉及的是C#语言在网络编程中的应用,特别是IP地址处理和多线程技术。下面将详细解析这些知识点: 1. **IP地址处理**: - 在描述中提到的"如果192.168.1.的输入后面少...

    MFC实现端口扫描,网段IP扫描

    综上所述,"MFC实现端口扫描,网段IP扫描"涉及到的主要知识点包括:MFC基础,套接字编程,TCP/IP协议,多线程编程,以及网络扫描策略。通过这些技术,开发者可以构建高效、灵活的网络诊断工具。

    JAVA SWING 多线程实现扫描同一个网段的IP,以及选定IP的端口

    用了一个礼拜时间做了一个端口扫描程序 从扫描同一个网段的IP开始 逐步添加功能 现在还具有了扫描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 扫描同一网段的IP主要是用SHELL方法 ...

    IP多任务网段扫描器

    总的来说,通过这个《IP多任务网段扫描器》项目,我们可以学习到C#中的多线程编程、异步操作、网络通信API的使用,以及如何组织和设计高效的网络应用。对于想要深入理解C#网络编程的初学者,这是一个非常有价值的...

    visual c++网段扫描程序

    - **并发扫描**:为了提高扫描效率,可以使用多线程或异步I/O模型,同时扫描多个目标。 - **避免被检测**:网络扫描可能会被视为攻击行为,因此应合理控制扫描速度,避免引起不必要的注意。 - **合法性和道德问题...

    c#多线程获得网段IP

    在C#中,多线程允许程序同时执行多个独立的任务,提高了程序的并发性和效率。当我们需要快速获取大量IP的可达性时,可以创建多个线程,每个线程负责ping一个或几个IP地址,从而加快整个过程。这可以通过System....

    单线程,多线程,线程池程序设计扫描网络IP.doc

    【线程与线程池的概念】 ...以上就是利用单线程、多线程、线程池来设计扫描网络IP的程序设计要点,以及实现步骤和代码结构的解析。这样的设计可以高效地遍历大量IP,提高扫描效率,并确保用户界面的流畅性。

    端口扫描程序的设计与实现.doc

    TCP扫描支持多线程,能对单个指定的主机进行扫描或对 指定网段内的主机进行逐个扫描。能扫描特定的部分端口号或对指定的端口段内的端口 进行逐个扫描。此端口扫描程序能快速地进行TCP扫描,准确地检测出对TCP协议...

    java扫描网段

    ### Java扫描网段:深入解析与实践 #### 核心知识点概述 在IT网络管理与安全领域,网络扫描是一项基础而关键的技术,用于发现网络中的活动主机、端口和服务,以便进行资产管理、漏洞评估和安全审计。Java作为一种...

    VB.NET 多线程TCP端口扫描工具.rar

    VB.NET 多线程TCP端口扫描工具,使用前请输入要扫描的网段IP和端口,本程序可将扫描到的开放端口数量显示在窗口中,扫描时应用了多线程技术,扫描时显示当前线程数,适时显示扫描进度和扫描时间,以毫秒计时,扫描...

    C#实现网段扫描,C#是主推语言,你们是否有兴趣用C#来实现对局域网IP地址的扫描,尝试一下自己写的快乐,那么请跟我来。

    为了提高扫描速度,可以使用多线程或多任务技术,如`Task`类,同时处理多个IP地址。此外,还可以使用异步编程,如`async/await`关键字,以减少阻塞。 通过以上步骤,你可以构建一个基本的C#网段扫描程序。当然,...

Global site tag (gtag.js) - Google Analytics