zoukankan      html  css  js  c++  java
  • 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();
                }
            }
        }
    }

    运行截图:

  • 相关阅读:
    第一次项目总结
    动画animation
    动画基本
    JQ属性和CSS
    JQ选择器
    关于JS的循环和函数,由入门到放弃
    Js知识点
    课程总结
    移动端开发--项目总总结
    项目总结
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5272229.html
Copyright © 2011-2022 走看看