⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 threadscan.java

📁 java编写的端口扫描程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/*
 *实现扫描的主体程序
 */
public class ThreadScan{
	
	public   JFrame main=new JFrame("JAVA端口扫描器");
	
	//显示扫描结果
	public   JTextArea Result=new JTextArea("",4,40);
	//滚动条面板
	public   JScrollPane resultPane = new JScrollPane(Result,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
	JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
	
	
	//输入主机名文本框
	public   JTextField hostname=new JTextField("localhost",8);
	
	//输入ip地址前3位的输入框
	public   JTextField fromip1=new JTextField("0",3);
	//输入ip地址4~6位的输入框
	public   JTextField fromip2=new JTextField("0",3);
	//输入ip地址7~9位的输入框
	public   JTextField fromip3=new JTextField("0",3);
	//输入起始ip地址最后4位的输入框
	public   JTextField fromip4=new JTextField("0",3);
	//输入目标ip地址最后4位的输入框
	public   JTextField toip=new JTextField("0",3);
	
	//输入最小端口的输入框
	public   JTextField minPort=new JTextField("0",4);
	//输入最大端口的输入框
	public   JTextField maxPort=new JTextField("1000",4);
	//输入最大线程数量的输入框
	public   JTextField maxThread=new JTextField("100",3);
	
	//错误提示框
	public   JDialog DLGError=new JDialog(main,"错误!");
	public   JLabel DLGINFO=new JLabel("");
	
	public   JLabel type=new JLabel("请选择:");
	
	//扫描类型
	public   JRadioButton radioIp = new JRadioButton("IP地址:");
	public   JRadioButton radioHost = new JRadioButton("主机名:",true);
	//单选框组
	public   ButtonGroup group = new ButtonGroup();

	public   JLabel P1=new JLabel("端口范围:");
	public   JLabel P2=new JLabel("~");
	public   JLabel P3=new JLabel("~");
	public   JLabel Pdot1 = new JLabel(".");
	public   JLabel Pdot2 = new JLabel(".");
	public   JLabel Pdot3 = new JLabel(".");
	public   JLabel TNUM=new JLabel("线程数:");
	public   JLabel RST=new JLabel("扫描结果:                                       ");
	public   JLabel con=new JLabel("                                                                                                              ");

	//定义按钮
	public   JButton OK = new JButton("确定");
	public   JButton Submit = new JButton("开始扫描");
	public   JButton Cancel = new JButton("退出");
	public   JButton saveButton = new JButton("保存扫描结果");

	//菜单栏
	public   JMenuBar myBar = new JMenuBar();
	public   JMenu myMenu = new JMenu("文件(F)");
	public   JMenuItem saveItem = new JMenuItem("保存扫描结果(S)");
	public   JMenuItem exitItem = new JMenuItem("退出(Q)");
	public   JMenu myMenu2 = new JMenu("帮助");
	public   JMenuItem helpItem = new JMenuItem("阅读");

	public   void main(String[] args){

		main.setSize(500,400);
		main.setLocation(300,300);
		main.setResizable(false);
		main.setLayout(new GridBagLayout());
		main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		DLGError.setSize(300,100);
		DLGError.setLocation(400,400);

		//添加“菜单栏”
		myMenu.add(saveItem);
		myMenu.add(exitItem);

		myMenu2.add(helpItem);

		myBar.add(myMenu);
		myBar.add(myMenu2);
		main.setJMenuBar(myBar);

		//设置热键
		myMenu.setMnemonic('F'); 
		saveItem.setMnemonic ('S'); 
		//为“另存为”组件设置快捷键为ctrl+s
		saveItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_S,InputEvent.CTRL_MASK)); 
		exitItem.setMnemonic('Q'); 
		exitItem.setAccelerator (KeyStroke.getKeyStroke (KeyEvent.VK_E,InputEvent.CTRL_MASK)); 

		//采用表格包型布局
		Container mPanel = main.getContentPane();
		GridBagConstraints c = new GridBagConstraints();
		c.insets = new Insets(10,0,0,10);

		c.gridx = 0;
		c.gridy = 0;
		c.gridwidth = 10;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(type,c);

		group.add(radioIp);
		group.add(radioHost);

		c.gridx = 0;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(radioIp,c);

		c.gridx = 1;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(fromip1,c);

		c.gridx = 2;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(Pdot1,c);

		c.gridx = 3;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(fromip2,c);

		c.gridx = 4;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(Pdot2,c);

		c.gridx = 5;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(fromip3,c);

		c.gridx = 6;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(Pdot3,c);

		c.gridx = 7;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(fromip4,c);

		c.gridx = 8;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(P2,c);

		c.gridx = 9;
		c.gridy = 1;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(toip,c);

		c.gridx = 0;
		c.gridy = 2;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(radioHost,c);

		c.gridx = 1;
		c.gridy = 2;
		c.gridwidth = 3;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(hostname,c);

		c.gridx = 0;
		c.gridy = 3;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(P1,c);

		c.gridx = 1;
		c.gridy = 3;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(minPort,c);

		c.gridx = 2;
		c.gridy = 3;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(P3,c);

		c.gridx = 3;
		c.gridy = 3;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(maxPort,c);

		c.gridx = 0;
		c.gridy = 4;
		c.gridwidth = 1;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(TNUM,c);

		c.gridx = 1;
		c.gridy = 4;
		c.gridwidth = 3;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(maxThread,c);

		c.gridx = 0;
		c.gridy = 5;
		c.gridwidth = 3;
		c.fill = GridBagConstraints.VERTICAL;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(Submit,c);
		
		c.gridx = 3;
		c.gridy = 5;
		c.gridwidth = 3;
		c.fill = GridBagConstraints.VERTICAL;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(saveButton,c);

		c.gridx = 6;
		c.gridy = 5;
		c.gridwidth = 4;
		c.fill = GridBagConstraints.VERTICAL;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(Cancel,c);

		c.gridx = 0;
		c.gridy = 6;
		c.gridwidth = 10;
		c.fill = GridBagConstraints.BOTH;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(RST,c);

		//设置文本区域可以换行
		Result.setLineWrap(true);
		//设置文本区域不可编辑
		Result.setEditable(false);

		c.gridx = 0;
		c.gridy = 7;
		c.gridwidth = 10;
		c.gridheight = 4;
		c.fill = GridBagConstraints.VERTICAL;
		c.anchor = GridBagConstraints.CENTER;
		mPanel.add(resultPane,c);

		Container dPanel = DLGError.getContentPane();
		dPanel.setLayout(new FlowLayout(FlowLayout.CENTER));
		dPanel.add(DLGINFO);
		dPanel.add(OK);

		Submit.addActionListener(new SubmitAction());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -