?? threadscan.java
字號:
Cancel.addActionListener(new CancleAction());
OK.addActionListener(new OKAction());
//實現保存功能
saveItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JFileChooser fc=new JFileChooser();
int returnVal=fc.showSaveDialog(null);
//點擊“保存”
if(returnVal == 0){
File saveFile=fc.getSelectedFile();
try {
FileWriter writeOut = new FileWriter(saveFile);
writeOut.write(ThreadScan.Result.getText());
writeOut.close();
}
catch (IOException ex) {
System.out.println("保存失敗");
}
}
//點擊“取消”
else
return;
}
});
//實現退出功能
exitItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
System.exit(0);
}
});
//實現幫助功能
helpItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
new AboutDialog();
}
});
saveButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
JFileChooser fc=new JFileChooser();
int returnVal=fc.showSaveDialog(null);
//點擊“保存”
if(returnVal == 0){
File saveFile=fc.getSelectedFile();
try {
FileWriter writeOut = new FileWriter(saveFile);
writeOut.write(ThreadScan.Result.getText());
writeOut.close();
}
catch (IOException ex) {
System.out.println("保存失敗");
}
}
//點擊“取消”
else
return;
}
});
main.setVisible(true);
}
}
/*
*實現“取消”功能
*退出程序
*/
class CancleAction implements ActionListener{
public void actionPerformed (ActionEvent e){
System.exit(0);
}
}
/*
*實現“確定”功能
*完成掃描
*/
class SubmitAction implements ActionListener{
public void actionPerformed (ActionEvent a){
int minPort;
int maxPort;
int maxThread;
int ip1 = 0;
int ip2 = 0;
int ip3 = 0;
int ipstart = 0;
int ipend = 0;
String ipaddress = "";
String hostname = "";
ThreadScan.Result.setText("");
//將"確定"按鈕設置成為不可用
if(ThreadScan.Submit.isEnabled()){
ThreadScan.Submit.setEnabled(false);
}
/*
*判斷搜索的類型
*按照ip地址掃描:type = 0
*按照主機名稱掃描:type = 1
*/
if(ThreadScan.radioIp.isSelected()){
TCPThread.type = 0;
//判斷ip的前3位是否為int型
try{
ip1=Integer.parseInt(fromip1.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的ip!");
ThreadScan.DLGError.setVisible(true);
return;
}
//判斷ip的4~6位是否為int型
try{
ip2=Integer.parseInt(fromip2.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的ip!");
ThreadScan.DLGError.setVisible(true);
return;
}
//判斷ip的7~9位是否為int型
try{
ip3=Integer.parseInt(fromip3.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的ip!");
ThreadScan.DLGError.setVisible(true);
return;
}
//判斷起始ip的最后4位是否為int型
try{
ipstart=Integer.parseInt(fromip4.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的ip!");
ThreadScan.DLGError.setVisible(true);
return;
}
//判斷目標ip的最后4位是否為int型
try{
ipend=Integer.parseInt(toip.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的目標ip!");
ThreadScan.DLGError.setVisible(true);
return;
}
//判斷起始ip是否正確
//判斷條件:大于0且小于等于255
if(ip1<0 || ip1>255||ip2<0 || ip2>255||ip3<0 || ip3>255||ipstart<0 || ipstart>255){
ThreadScan.DLGINFO.setText(" ip地址為0-255的整數! ");
ThreadScan.DLGError.setVisible(true);
return;
}
else{
TCPThread.ip1 = ip1;
TCPThread.ip2 = ip2;
TCPThread.ip3 = ip3;
TCPThread.ipstart = ipstart;
}
//判斷目標ip是否正確
//判斷條件:大于0且小于等于255
if(ipend<0 || ipend>255){
ThreadScan.DLGINFO.setText(" 目標ip地址為0-255的整數! ");
ThreadScan.DLGError.setVisible(true);
return;
}
else{
TCPThread.ipend = ipend;
}
ipaddress = "" + ip1 + ip2 + ip3 + ipstart;
/*
*判斷ip地址的有效性
*/
try{
TCPThread.hostAddress=InetAddress.getByName(ipaddress);
}
catch(UnknownHostException e){
ThreadScan.DLGINFO.setText(" 錯誤的IP或地址不可達! ");
ThreadScan.DLGError.setVisible(true);
return;
}
}
//根據主機名進行端口掃描
if(ThreadScan.radioHost.isSelected()){
TCPThread.type = 1;
/*
*判斷主機名稱的有效性
*/
try{
TCPThread.hostAddress=InetAddress.getByName(ThreadScan.hostname.getText());
}
catch(UnknownHostException e){
ThreadScan.DLGINFO.setText(" 錯誤的域名或地址不可達! ");
ThreadScan.DLGError.setVisible(true);
return;
}
}
/*
*判斷端口號的有效性
*/
try{
minPort=Integer.parseInt(ThreadScan.minPort.getText());
maxPort=Integer.parseInt(ThreadScan.maxPort.getText());
maxThread=Integer.parseInt(ThreadScan.maxThread.getText());
}
catch(NumberFormatException e){
ThreadScan.DLGINFO.setText("錯誤的端口號或線程數!端口號和線程數必須為整數!");
ThreadScan.DLGError.setVisible(true);
return;
}
/*
*判斷最小端口號的有效范圍
*判斷條件:大于0且小于65535,最大端口應大于最小端口
*/
if(minPort<0 || minPort>65535 || minPort>maxPort){
ThreadScan.DLGINFO.setText("最小端口必須是0-65535并且小于最大端口的整數!");
ThreadScan.DLGError.setVisible(true);
return;
}
else{
TCPThread.MIN_port=minPort;
}
/*
*判斷最大端口號的有效范圍
*判斷條件:大于0且小于65535,最大端口應大于最小端口
*/
if(maxPort<0 || maxPort>65535 || maxPort<minPort){
ThreadScan.DLGINFO.setText("最大端口必須是0-65535并且大于最小端口的整數!");
ThreadScan.DLGError.setVisible(true);
return;
}
else{
TCPThread.MAX_port=maxPort;
}
/*
*判斷線程數量的有效范圍
*判斷條件:大于1且小于200
*/
if(maxThread<1 || maxThread>200){
ThreadScan.DLGINFO.setText(" 線程數為1-200的整數! ");
ThreadScan.DLGError.setVisible(true);
return;
}
ThreadScan.Result.append("線程數 "+ThreadScan.maxThread.getText()+"\n");
//啟動線程
for(int i=0;i<maxThread;i++){
new TCPThread("T" + i,i).start();
}
}
}
/*
*實現錯誤提示框中的“確定”按鈕功能
*/
class OKAction implements ActionListener{
public void actionPerformed (ActionEvent e){
ThreadScan.DLGError.dispose();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -