当前位置: 首页 > news >正文

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();
            }
        }
    }
}

运行截图:

 

转载于:https://www.cnblogs.com/xiaoduc-org/p/5272229.html

相关文章:

  • 一条SQL查询是如何执行的?
  • 简单查询练习
  • ionic 字体的导入方法
  • 什么是回表
  • DVB搜索
  • MySQL是如何解决幻读的
  • Spark的三种运行模式快速入门
  • 主从复制原理
  • 绘制图片和文字
  • mysql日志中redo和undo日志概念以及应用
  • configure/make/make install的作用
  • MySQL索引
  • HDU 5019 Revenge of GCD(数学)
  • [<事务专题>]
  • Nginx总算支持动态模块了
  • 分享的文章《人生如棋》
  • 【EOS】Cleos基础
  • 【跃迁之路】【585天】程序员高效学习方法论探索系列(实验阶段342-2018.09.13)...
  • 230. Kth Smallest Element in a BST
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java 内存分配及垃圾回收机制初探
  • JavaScript-Array类型
  • js算法-归并排序(merge_sort)
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 聊聊sentinel的DegradeSlot
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 智能合约Solidity教程-事件和日志(一)
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • Mac 上flink的安装与启动
  • 翻译 | The Principles of OOD 面向对象设计原则
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​Java并发新构件之Exchanger
  • ​你们这样子,耽误我的工作进度怎么办?
  • #define用法
  • #vue3 实现前端下载excel文件模板功能
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (function(){})()的分步解析
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (四)Controller接口控制器详解(三)
  • .NET 依赖注入和配置系统
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • []sim300 GPRS数据收发程序
  • [100天算法】-二叉树剪枝(day 48)
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [C++]模板与STL简介
  • [Django 0-1] Core.Handlers 模块
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [GN] DP学习笔记板子
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [html] 动态炫彩渐变背景