Java项目开发系列(端口扫描工具)

前言

关于本人

首先这是本人写的第一篇博客,可能写的不好请大家见谅 , 以前只是知识记录成笔记放到有道云中 , 自己从来没有分享过任何知识 , 但是看多了别人的分享 , 觉得自己也应该和别人一样有分享精神 . 以后本人每次写了新的项目和学习了新的知识的笔记都会放到这个博客上,希望能找到一些志同道合的朋友,和大家一起进步 , 加油!

项目介绍

关于端口在计算机中一直是重中之重 , 因为计算机和外部通信都是通过端口. 本项目通过端口检测 , 发现被占用的端口 .从而可以进行判断本机是否中了木马等 , 本项目非常简单 , 但是也涉及到了几个知识点 , 最重要的还是训练Java能力

涉及知识点

  • Java Socket操作
  • Java 多线程操作
  • Java 集合框架操作
  • 一些线程操作的小技巧

程序开发

程序运行结果

Java项目开发系列(端口扫描工具)_第1张图片

程序代码

package Scanner;

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

/**
 * Java实现多线程扫描开放端口
 * @author Administrator
 *
 */
public class Scanner extends Thread {

    private List openPorts = new ArrayList<>();
    private static List Threads = new ArrayList<>();   //解决主线程先退出问题

    private int[] p;        //表示要扫描的端口范围
    Socket s;

    public Scanner(int[] p ) {
    this.p = p;
    }

    /**
     * 线程1 , 扫描端口
     */
    @Override
    public void run() {
    //System.out.println("线程" + (p[0] + 1) + "已经启动!" );
    for(int i = p[0] ; i < p[1] ; i++ ) {
        try {
        s = new Socket("ip地址", i ); //通过这样的方法来判断端口是否开启 , 如果没有连接上会抛出异常
        openPorts.add(i );  
        System.out.println("扫描到端口:" + i );  //解决的问题是每扫描完一个建立连接非常消耗资源 所以一定要关闭
        s.close();
        } catch (UnknownHostException e) {
        } catch (IOException e) {
        }



    }

    super.run();
    }

    /**
     * 主方法
     * @param args
     */
    public static void main(String[] args) {
    long start = System.currentTimeMillis();
    for(int i = 0 ; i < 6000 ; i += 100 ) {     //创建6000个线程........ 本质上扫描了60000个端口
        Thread t = new Scanner(new int[] {
        i + 1 , i + 100             // 1 , 100  ; 2 : 200
        });
        Threads.add(t );
        t.start();
    }

    //解决主线程先退出问题
    for(Thread v : Threads ) {
        try {
        v.join();
        } catch (InterruptedException e) {
        }
    }

    long end = System.currentTimeMillis();


    System.out.println("扫描时间为:" + (end - start) );

    }

}

你可能感兴趣的:(Java)