?? threadscan.java
字號:
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 + -