登录
    Technology changes quickly but people's minds change slowly.

java编写一个端口扫描器

网络编程 华裳绕指柔 1363次浏览 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();
			}
		}
	}
}

778706-20160313160058522-546358591

778706-20160313160139288-253476304


华裳绕指柔, 版权所有丨如未注明 , 均为原创|转载请注明java编写一个端口扫描器
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址