JAVA实现端口扫描器

package 端口扫描器15;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Scanner;

public class Port_check {
    public static void main(String args[]){
        System.out.println("请输入ip地址和端口区间");
        Scanner sc = new Scanner(System.in);
        String ip=sc.next();
        Integer begin = sc.nextInt();
        Integer end = sc.nextInt();
        if(check(ip,begin,end)){
            System.out.println("该区间里有可连接的端口并已经被标记为open");
        }
        else
            System.out.println("该区间里没有可以连接的端口");
    }
    public static boolean check(String ip,Integer begin,Integer end){
        if(begin>end){
            System.out.println("该区间不存在");
            return false;
        }
        ArrayList<Integer>open=new ArrayList<>();
        //实现区间判断
        for(int i=begin;i<=end;i++){
            if(isConnectable(ip,i)){
                open.add(i);
            }
        }
        if(open.isEmpty())
            return false;
        else{
            System.out.println("可连接的端口如下:");
            for(int i=0;i<open.size();i++)
                System.out.print(open.get(i));
            return true;
        }

    }
    public static boolean isConnectable(String ip,Integer port){
        Socket socket = new Socket();
        try {
            socket.connect(new InetSocketAddress(ip,port));
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return true;
    }
}

输入某个ip地址和端口区间,程序会逐个尝试区间内的端口,如果能成功连接的话就将该端口标记为open。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值