码迷,mamicode.com
首页 > 编程语言 > 详细

java编写一个端口扫描器

时间:2016-03-13 17:57:49      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

好久没写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();
            }
        }
    }
}

运行截图:

 

技术分享

技术分享

java编写一个端口扫描器

标签:

原文地址:http://www.cnblogs.com/xiaoduc-org/p/5272229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!