java编写一个端口扫描器

好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩。

源代码如下:

共两个类,比较简单奥

import javax.swing.*;

import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.*;
public class PortScan extends JFrame {
    JPanel center=new JPanel();
    Box hBox0=Box.createHorizontalBox();
     Box hBox1= Box.createHorizontalBox();
     Box hBox2= Box.createHorizontalBox();
     Box hBox3= Box.createHorizontalBox();
    private JLabel state=new JLabel("关闭");
    private JLabel HOST=new JLabel("主机名:");
    private JLabel PORT=new JLabel("端口号:");
    private JLabel STATE=new JLabel("状态:");
    private JButton btn1=new JButton("开始扫描");
    private JButton reset=new JButton("重置");
    private JTextField host=new JTextField(20);
    private JTextField port=new JTextField(7);
    Font f1=new Font("隶书",Font.PLAIN,15);
    public static void main(String[] args) {
        JFrame portscan=new PortScan();
        portscan.setVisible(true);
    }

    public PortScan(){
        setTitle("PortScanner");
        setSize(300, 200);
        center.setLayout(new BoxLayout(center,BoxLayout.Y_AXIS));
         Toolkit kit = Toolkit.getDefaultToolkit();
            Dimension screenSize = kit.getScreenSize();//获取屏幕分辨率
          setLocation(screenSize.width/4,screenSize.height/4);//位置
          state.setFont(f1);
          HOST.setFont(f1);
          PORT.setFont(f1);
          btn1.setFont(f1);
          reset.setFont(f1);
          STATE.setFont(f1);
         center.add(hBox0);
         center.add(Box.createRigidArea(new Dimension(10,20)));
         center.add(hBox1);
         center.add(Box.createRigidArea(new Dimension(2,20)));
         center.add(hBox2);
         center.add(Box.createRigidArea(new Dimension(2,20)));
         center.add(hBox3);
         hBox0.add(HOST);
         hBox0.add(host);
         hBox1.add(PORT);
         hBox1.add(port);
         hBox2.add(btn1);
         hBox2.add(reset);
         hBox3.add(STATE);
         hBox3.add(state);
         add(center);
         btn1.addActionListener(new MyActionListener());
         reset.addActionListener(new MyActionListener());
    }
    class MyActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent e) {
            String post1=host.getText();
            int port1=Integer.parseInt(port.getText());
            if(e.getActionCommand()=="开始扫描"){
            if(    PortScannerByIP.scan(post1, port1)){
                state.setText("开放");
            }else{
                state.setText("关闭");
            }

            }
            if(e.getActionCommand()=="重置"){
                host.setText("");
                port.setText("");
            }
        }

    }
}
import java.io.IOException;
import java.net.Socket;

public class PortScannerByIP {

    public static boolean scan(String host,int port){
        boolean flag=true;
        Socket socket=null;
        try {
            socket=new Socket(host,port);
            return flag;
        } catch (IOException e) {
            flag=false;
            return flag;
        }finally{
            try {
                if(socket!=null)
                    socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

运行截图:

时间: 2024-11-20 05:51:49

java编写一个端口扫描器的相关文章

网络攻防学习 1编写一个端口扫描器

谨以此文献给初学的自己! 我有太多的名词不认识通过学习 一步步巩固基础 一步步提高自己r 任何一个靠谱的网络攻击都是起步于侦查的.我们将学习编写一个扫描主机开放的tcp端口的侦察小脚本,为了与tcp端交互,我们先建立TCP套接字. 套接字: 英文名字为socket, 是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程.

如何用Java编写一个简单的服务器和客户机

今天我要向大家介绍的是自己编写的一个比较简单的服务器和客户机程序,注意一下哦,比较简单.好了,闲话休提,砸门直入主题. 小编先从客户机和服务器的模型开始讲解.简单来说,我们实现的这种模型呢,我们每一个用户称为一个客户机,用户之间的通信之间需要一个中转,所有客户机的通信都依托于这个中转,很明显,这个中转,就是砸门的服务器了.整个模型比较简单明了,那么,接下来我们就直接进入实现阶段. 我们从实现服务器开始.Java提供了这样的一个类,ServerSocket.我们通过实例化它的方式来创建一个服务器.

mac/unix系统:C++实现一个端口扫描器

在比较早以前,我用过S扫描器, 以及大名鼎鼎的nmap扫描器, 可以快速扫描某个主机开放的端口, 今天使用C实现这样一个软件, 编译环境为Mac, 系统版本10.11.6: #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <unistd.h> #include <time.h> #include <sys/types.h> #include

Java编写一个四位数的随机验证码

import java.util.Random; /* 随机数类 Random 需求: 编写一个函数随机产生四位的验证码.  */ public class Demo5 { public static void main(String[] args) { /* Random random = new Random(); int randomNum = random.nextInt(10)+1; //产生 的 随机数就是0-10之间 System.out.println("随机数:"+ 

面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”. 一.需要分析 1.输入为一个字符串和字节数,输出为按字节截取的字符串-------------->按照字节[byte]截取操作字符串,先将String转换成byte类型 .2.汉字不可以截半----------------------------------

java,编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz.

需求:编写一个从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印出foo,在每个5的倍数行上打印biz,在每个7的倍数上打印baz. package study01; public class For { public static void main(String[] args) { for(int i = 1;i<=150;i++){ System.out.print(i); if(i%3==0){ System.out.print(" foo"); } if(i

Java编写一个路由算法,并txt输入输出

路由算法:1-9均代表主机名称 1. 输入: 图3拓扑的输入文件为input.txt,本算法为双向线,来回只需输入一个即可 Input.txt: leftnodeID,rightnodeID,bandwidth 1,3,100 1,4,100 2,3,100 2,4,100 3,4,100 3,5,100 3,6,100 4,5,100 4,6,100 5,6,100 5,7,100 5,8,100 6,7,100 6,8,100 ; srcNodeID,dstNodeID,bandwidth

Java编写一个随机产生小学生四则运算题30道

//注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0. package 课堂测试1;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.Random;public class Arithmetic { String f() { int i=(int)

java编写一个可以进行多个选择题测验评分的程序(从高分到低分依次输出学生和成绩)

public class GradeExam { public static void main(String[] args) { char[][] answers = { {'A','B','A','C','C','D','E','E','A','D'}, {'D','B','A','B','C','A','E','E','A','D'}, {'E','D','D','A','C','B','E','E','A','D'}, {'C','B','A','E','D','C','E','E','