多線程端口掃描程序設計與實現參考模板_第1頁
多線程端口掃描程序設計與實現參考模板_第2頁
多線程端口掃描程序設計與實現參考模板_第3頁
多線程端口掃描程序設計與實現參考模板_第4頁
多線程端口掃描程序設計與實現參考模板_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中南大學計算機網絡課程設計報告題 目 多線程端口掃描程序設計與實現 學生姓名 孫毅 指導教師 劉嬪 學 院 信息科學與工程學院 專業班級 信息安全1401 1 / 43完成時間 2016/10/19 目錄第一章 需求分析11.1設計任務與要求11.2 系統功能描述11.2.1功能概述11.2.2本系統要實現的功能1第二章 總體設計22.1總體分析22.1界面設置構思圖22.3界面使用設置構思22.4后臺設計構思3第三章 詳細設計43.1界面設計43.2界面設計圖43.3后臺設計5第四章 調試分析與運行結果94.1運行環境與要求94.2 運行程序流程圖94.3運行界面10第五章 課程設計總結14

2、第六章 參考文獻15第七章 附錄15第一章 需求分析1.1設計任務與要求 本設計要求完成一個多線程端口掃描程序的設計與實現,具有易用、美觀的界面。功能要求: 能夠對本地或遠程主機進行端口掃描。能夠對制定端口段進行掃描。能夠掃描制定IP地址范圍內哪些主機開放了特定端口,如常見的TCP端口FTP(21)等。使用 TCP connect進行端口掃描; 使用 TCP SYN 進行端口掃描; 使用 ICMP echo 掃描實現 IP 掃描; 能把掃描結果記錄保存下來。1.2 系統功能描述1.2.1功能概述 多線程端口掃描器是實現計算機的端口的掃描,只要在在前臺設置好所要掃描的IP、起始端口、結束端口以及

3、所要用到的線程數,點擊掃描,就可以掃描到所輸入IP地址主機的開放端口,并顯示在主窗體中;點擊退出,則可以退出該程序。IP設置應為所在主機的IP地址,起始端口和結束端口應為065535之間的一個數,且起始端口應小于結束端口的大小。線程數為0200之間的一個數。點擊開始后就會運行,直到掃描完畢顯示出開放端口,如果沒有開放端口,則只顯示掃描完畢。1.2.2本系統要實現的功能 端口掃描功能:掃描開放的端口,并將掃描到的開放端口號送到前臺。 圖像顯示功能:顯示界面圖形。 多線程功能:當客戶端要求與服務器端建立連接時,服務器端就將用到多線程功能,為每一個建立起來的連接創建一個線程。 異常拋出功能:對于明顯

4、的錯誤,能提示出錯誤的類型并結束程序的運行。第2章 總體設計2.1總體分析 本程序分為前后臺系統,后臺系統用于掃描主機開放端口,并把節掃描的數據送至前臺窗口顯示;前臺要顯示掃描的結果,所以應為一個窗口,這個窗口應能夠設置主機的IP地址,設置端口的開始端口、結束端口和線程數,并且還能夠顯示掃描的狀態。在中央是顯示結果的窗體。本程序還應能夠有控制掃描的狀態命令,附加設置最小化和關閉按鈕。2.1界面設置構思圖 圖1 系統構思圖2.3界面使用設置構思當出現如圖所示的界面時,填寫好要掃描的IP地址,需要掃描的端口范圍和線程數,單擊命令提示按鈕就可以開始掃描,掃描結果就會顯示在中間的掃描結果顯示區域,在掃

5、描狀態顯示區就會顯示是否掃描完畢。流程圖如下:界面出現填寫IP地址或者用默認的IP設置掃描需要的線程數或者是用默認的線程數單擊命令按鈕開始掃描掃描結束,顯示結果顯示在結果顯示區域是否繼續退出結束否是 圖2 系統構思流程圖2.4后臺設計構思后臺系統使用Scanner和Scan類,創建前臺布局和創建掃描端口、事件處理,并且能對簡單的錯誤進行判斷,顯示錯誤原因。調用數據處理包,處理異常情況;調用皮膚包,美化顯示窗口。第3章 詳細設計3.1界面設計本程序界面圖形設計要能清楚顯示掃描后的結果,并且能很好的體現出界面的整潔大方,但并不失去吸引人眼球的畫面,所以在做界面的時候考慮了界面的色彩,并且添加了皮膚

6、,界面上面的字體設置和windows窗口設置一樣采用宋體,界面上的按鈕不設置過多的按鈕,僅設置有必要的按鈕即可,界面設置大方。使用的時候有默認的IP地址、需要掃描的端口和線程數,如果需要掃描其他主機,只需要填寫好要掃描的主機的IP地址,需要掃描的端口范圍和線程數,單擊命令提示按鈕就可以開始掃描,掃描結果就會顯示在中間的掃描結果顯示區域,在掃描狀態顯示區就會顯示是否掃描完畢。3.2界面設計圖本程序采用小窗口形式,外圍大小為700mm*700mm,結果顯示字幕為主機地址加開放端口。添加個性皮膚。其余地方設置按鈕和掃描的主機地址、端口和線程數。設計的預計頁面圖形如圖:圖3 系統界面設計圖3.3后臺設

7、計本程序使用了為主要的Scanner2類和ScanTcpConnect類。ScanTcpConnect類的作用是創建線程掃描端口,然后把結果顯示到前臺。Scanner2類的作用是構造前臺布局,調用ScanTcpConnect類添加事件處理,對輸入進行錯誤判斷,如果輸入不在允許的范圍之內則顯示相關錯誤。在本程序中用到了網絡編程的兩個類,下面介紹這兩個類的常用方法。InetSocketAddress類構造方法如下:l InetSocketAddress(InetAddress addr, int port):根據 IP 地址和端口號創建套接字地址。l InetSocketAddress(int p

8、ort):創建套接字地址,其中 IP 地址為通配符地址,端口號為指定值。l InetSocketAddress(String hostname, int port):根據主機名和端口號創建套接字地址。Socket類常用方法如下:l Socket():通過系統默認類型的 SocketImpl 創建未連接套接字 l Socket(InetAddress address, int port):創建一個流套接字并將其連接到指定 IP 地址的指定端口號。l void bind(SocketAddress bindpoint):將套接字綁定到本地地址。l void close():關閉此套接字。l voi

9、d connect(SocketAddress endpoint):將此套接字連接到服務器。l void connect(SocketAddress endpoint, int timeout):將此套接字連接到具有指定超時值的服務器。l boolean isClosed():返回套接字的關閉狀態。l boolean isConnected():返回套接字的連接狀態。本程序還調用其他的一些類和包,比如軟件包 java.awt.color 、java.awt.event、io.IOException、Javax.Swing、jvnet.substance.*。l java.awt.color包的

10、的描述:提供用于顏色空間的類。它包含了基于國際色彩聯盟 (ICC) 配置文件格式規范的顏色空間實現。它還包含了基于 ICC 配置文件格式規范的顏色配置文件。用來使界面更加具有色彩。Result.setBackground(Color.PINK);/設置窗口為粉紅l java.awt.event 的描述:提供處理由 AWT 組件所激發的各類事件的接口和類。事件由事件源所激發,向事件源注冊的事件偵聽器可接收有關特定事件類型的通知。此包定義了事件和事件偵聽器,以及事件偵聽器適配器,它是讓事件偵聽器的編寫過程更為輕松的便捷類。在本程序中使用:public void actionPerformed(Ac

11、tionEvent e) String cmd = e.getActionCommand();if(cmd.equals("Start")l io.IOException包的描述:用來處理io的錯誤,不僅僅是文件讀寫,還包括很多stream的讀寫,而且throws是用來放在函數定義的函數體前函數名后的,表示這個函數將會在出現異常的書后會拋出io異常,所以在以后的程序中調用這個函數的時候就必須用try和catch來捕獲異常,否則編譯會報錯,這主要涉及到java的安全機制。本程序中使用如下:try minPort = Integer.parseInt(PortStart.get

12、Text();maxPort = Integer.parseInt(PortEnd.getText();threadNum = Integer.parseInt(ThreadNum.getText(); catch (NumberFormatException e1) DLGError.setBounds(300, 280, 299, 120);DLGINFO.setText("錯誤的端口號或線程數!端口號和線程數必須為整數!");DLGINFO.setBounds(10, 20, 280, 20);OK.setBounds(110, 50, 60, 30);DLGErro

13、r.setVisible(true);return;l Javax.Swing集合描述:由所有Java圖形用戶界面(GUI)組件所構成,可運行在任一支持Java虛擬機(JVM)的本地平臺上。由于這些組件全都是用Java語言編寫的,因此它們可以提供比本地平臺GUI組件更多的功能。(與抽象窗口工具箱對比)。Java Swing是Java Foundation Classes(JFC)的一部分。在Swing中,Sun開發了一個經過仔細設計的、靈活而強大的 GUI 工具包。Swing是在AWT組件基礎上構建的。它所提供的功能要比AWT提供的更為廣泛。它也是Java技術的一種標準配置。Swing模型一個

14、Java GUI通常由頂層容器、中間容器以及多個原子組件組成。每個原子組件或容器都可能觸發相應事件的產生。容器是一類能夠在其中容納其他組件的特殊組件。Swing的GUI組件類是按照類屬層次以樹狀結構進行組織的。在這個樹的最頂層,即樹的根部,使一個最基本的容器類,被稱為頂層容器。Swing 提供了三個通用的頂層容器類JFrame,JDialog和JApplet。JFrame提供了基于窗體的應用程序,JDialog提供對話框形式的界面,JApplet提供Java小應用程序的界面形式。在頂層容器下是中間容器,用于容納其他的組件。通常窗格本身在顯示界面中是看不到的。面板類Panel是一種中間容器,它的

15、唯一作用是使組件更容易定位。頂層容器通過getContentPane()方法獲取內部的一個內容窗格。Swing包的組成:l javax.swing:基本Swing包,包括Swing容器、組件及相關設置的類和接口。l javax.swing.border:包括與邊界設計相關的類和接口。l javax.swing.colorchooser:與顏色選擇相關的類和接口。l javax.swing.event:包括事件處理相關的類和接口。l javax.swing.filechooser:包括對文件進行查看選取的相關類。l javax.swing.plaf:包括一些對外觀樣式操作的類和接口。l java

16、x.swing.tree:包括對樹形組件進行操作的類和接口。常用Swing組件:l 按鈕:JButtonl 文本區:JTextAreal 文本字段:JTextField在本程序中使用如下:/ 設置主窗體位置和大小Frame.setSize(700, 700); /設置主窗體大小/添加窗口監聽,使之可以關閉窗口Frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););/ 設置掃描按鈕和退出按鈕/Tcp connect掃描按鈕Tcp_connect.se

17、tBounds(17,313,140,30);Tcp_connect.setActionCommand("Tcp_connect");/設置JButton的屬性值Tcp_connect.addActionListener(this);/監聽按鈕的行為/Tcp SYN掃描按鈕Tcp_SYN.setBounds(17,363,140,30);Tcp_SYN.setActionCommand("Tcp_SYN");/設置JButton的屬性值Tcp_SYN.addActionListener(this);/監聽按鈕的行為/Icmp echo掃描按鈕ICMP_e

18、cho.setBounds(17,413,140,30);ICMP_echo.setActionCommand("ICMP_echo");/設置JButton的屬性值ICMP_echo.addActionListener(this);/監聽按鈕的行為/退出掃描按鈕Exit.setBounds(17,463,140,30);Exit.setActionCommand("Exit");Exit.addActionListener(this);l jvnet.substance.*:目的是提供一個流行的外觀(look & feel)。/設置窗體皮膚Su

19、bstanceAutumnLookAndFeel.setSkin(new FieldOfWheatSkin();第4章 調試分析與運行結果4.1運行環境與要求(1)性能要求實時性好、可靠性強、不占用系統太多的內存和存儲空間。(2)設計約束開發工具:jdk1.8.0_102 Eclipse jee 圖四 開發工具運行環境:Windows 10能實現用戶所定義的各項需求。在Eclipse中右擊,選擇運行方式,JAVA應用程序填寫IP地址,可填寫任意的一個IP出現程序界面設置開始端口大小,設置065535之間的端口號且必須為整數設置結束口,設置065535之間的端口號且必須為整數,并且大于開始端口設

20、置進程數,0200之間且必須為整數點擊掃描可以開始掃描結果顯示是否繼續掃描結束程序否,點擊退出是,重新設置4.2 運行程序流程圖 圖4 流程圖4.3運行界面未掃描狀態: 圖6 運行界面未掃描狀態圖正常掃描后狀態:圖7 運行界面正常掃描狀態圖起始端口設置有誤掃描開始后狀態報錯:圖8 運行界面起始端口設置錯誤報錯圖結束端口設置有誤掃描開始后狀態報錯:圖9 運行界面結束端口設置錯誤報錯圖線程數設置錯誤報錯:圖10 運行界面線程數設置錯誤報錯圖正常運行:圖11 正常運行圖正常運行后且保存掃描結果之前的文件內容: 圖12 保存掃描結果之前的文件內容圖正常運行后且保存掃描結果之后的文件內容: 圖13 保存

21、掃描結果之后的文件內容第5章 課程設計總結在此次課程設計中,遇到了一些問題,如:程序功能不能完全實現,對于面向對象的方法了解不夠透徹,運用到實際的軟件開發中存在著困難;對于Java語言,以前只學習到了一些最基本的知識,要在短時間內用Java語言來開發軟件是一個較大的挑戰;對于開發軟件的流程不熟悉,適應起來比較慢,編寫需求說明書和設計規格說明書時,自己感覺難以動手,這表明所學的知識不能靈活運用到實際中。對于以上的問題,自己有清楚的認識,解決辦法是需要大量閱讀相關的書籍,多看些項目的源代碼。對于書上以及網站上下載的資料中的Java實例必須理解,還有多跟精通JAVA語言的老師和同學請教和交流,取其精

22、華。對于實際動手能力與軟件開發的流程的適應,必須多進行實際的練習與操作,才能有所進步。我自己感覺此次課程設計做得挺成功的,通過這一次實踐編程,我學到了不少有關JAVA的實際編程的知識。在這次設計開始的第一天開始,我就開始著手修改一個用JAVA編寫的短線呈端口掃描的程序。我剛開始很自信自己能修改成功,但這一過程太不順利。用了兩天時間來修改那個JAVA程序,但調試的時候都沒有成功。后來我請教一個班上成績好的同學,在他的幫助下我不斷的發現錯誤,并改正它們,功夫不負有心人人,我的程序最后運行成功了。在這課程設計期間我的同學和老師幫助了我,有些東西是我們一起探討,一起解決方法的。當然在學習Java和設計

23、程序的過程中還得到了杭志老師的辛勤指導,為我解答了不少的疑問。同時,在劉老師身上我們學到了很多實用的東西,在此表示衷心的感謝!同時,還要感謝幫助過我的其他同學!這次課程設計令我感受很多。從拿到題目到改編JAVA程序;然后請教別人慢慢研究琢磨;從理論到實踐;從失敗到成功;忘不了我坐在電腦前苦苦思索,高溫下熬夜地編程的疲憊;忘不了因沉迷于編程卻耽誤了吃飯時間而挨餓辛酸;忘不了這其中了不少的東西,磨礪了我的意志;同時還鞏固了以前所學的知識,學到了不少書本上沒有的知識;學到了很多java編程知識,并學會了簡單的使用eclipse來開發java程序的一些使用技巧這次課程設計是對我本學期所學的知識的檢驗,

24、由此我發現了不少的問題。可以說它給了我一次自我評估的機會。通過設計讓我知道了那些方面我還是有欠缺的,促使我花時間彌補。臨近考試,時間太緊迫,致使程序實現的功能在方法上也許不是很完美,但我以后會多向老師請教,自己也要加強對Java 的學習。努力進一步提高自己的編程水平。此次的課程設計,對我來說撰寫文檔似乎是一個更大的挑戰。撰寫文檔不僅要求我們要對自己程序非常熟悉:程序的總體框架,功能,如何實現,存在什么問題等,同時還要求我們有清晰的思維和準確的表達能力以及嚴密的邏輯性。因此,寫完這篇文檔對于我們自身來說自然是獲益匪淺的。第6章 參考文獻1、Sharon Zakhour Scott Hommel等

25、著. Java 語言導學.人民郵電出版社, 20082、耿祥義 編著. Java基礎教程. 清華大學出版社, 20043、Joe Wigglesworth Paula Lumby. Java程序設計高級主題. 北京大學出版社, 20044、Y.Daniel Liang著,王鎂等譯.Java語言程序設計基礎篇.20065、朱福喜等.Java項目設計與開發范例.電子工業出版社,20056、李瑞民.網絡掃描技術揭秘.機械工業出版社,2012第7章 附錄帶注釋的源程序:/多線程端口掃描程序設計與實現帶有注釋的源程序import java.awt.*; /抽象窗口工具包,圖形界面組件類import ja

26、va.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.*; /各種IOimport javax.swing.*; /awt基礎上的一套圖形界面系統import .*;/第一大類:Scanner2類public class Scanner2 extends JFrame implements ActionListener public static void

27、main(String args) /程序入口new Scanner2();static int j = 0;/主窗口的創建,new組件public static JFrame Frame = new JFrame();public static Label labelIPStart = new Label("起始IP");public static Label labelIPEnd = new Label("結束IP");public static Label labelPortStart = new Label("起始端口");p

28、ublic static Label labelPortEnd = new Label("結束端口");public static Label labelThread = new Label("線程數");public static Label labelTimeOut = new Label("請求超時:");public static Label labelState = new Label("掃描狀態:");public static Label labelResult = new Label("掃

29、描結果:");public static Label labelScanning = new Label("掃描待命");JLabel photo= new JLabel(new ImageIcon("G:/圖片/QQ圖片20160724195038.jpg");public static JTextField hostNameStart = new JTextField("");public static JTextField hostNameEnd = new JTextField("127.

30、0.0.1");public static JTextField PortStart = new JTextField("10");public static JTextField PortEnd = new JTextField("30");public static JTextField ThreadNum = new JTextField("9");public static JTextField time = new JTextField("2000");public static TextAre

31、a Result1 = new TextArea();public static TextArea Result2 = new TextArea();public static Label DLGINFO = new Label("");public static JButton Tcp_connect = new JButton("Tcp connect 掃描");public static JButton Tcp_SYN = new JButton("Tcp SYN 掃描");public static JButton ICMP_

32、echo = new JButton("ICMP echo 掃描");public static JButton Exit = new JButton("退出掃描");public static JButton save = new JButton("保存結果");/錯誤提示對話框public static JDialog DLGError = new JDialog(Frame, "ERROR");public static JButton OK = new JButton("OK");/在構

33、造函數里進行窗口設計public Scanner2()/設置主窗體標題Frame.setTitle("計算機網絡課設:多線程端口掃描 -信安1401 孫毅 CSU");Frame.setSize(700, 700); /設置主窗體大小/添加窗口監聽,使之可以關閉窗口Frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););/設置一系列按鈕和小窗口及圖片/IPlabelIPStart.setBounds(17,13,50,20);h

34、ostNameStart.setBounds(67,13,90,25);hostNameStart.setHorizontalAlignment(JTextField.CENTER);/文本水平對齊方式labelIPEnd.setBounds(17,63,50,20);hostNameEnd.setBounds(67,63,90,25);hostNameEnd.setHorizontalAlignment(JTextField.CENTER);/文本水平對齊方式/起始端口 labelPortStart.setBounds(17,113,50,20);PortStart.setBounds(67

35、,113,90,25);PortStart.setHorizontalAlignment(JTextField.CENTER);/結束端口labelPortEnd.setBounds(17,163,50,20);PortEnd.setBounds(67,163,90,25);PortEnd.setHorizontalAlignment(JTextField.CENTER);/線程數labelThread.setBounds(17,213,50,20);ThreadNum.setBounds(67,213,90,25);ThreadNum.setHorizontalAlignment(JText

36、Field.CENTER);/請求超時labelTimeOut.setBounds(17,263,50,20);time.setBounds(67,263,90,25);time.setHorizontalAlignment(JTextField.CENTER);/Tcp connect掃描按鈕Tcp_connect.setBounds(17,313,140,30);Tcp_connect.setActionCommand("Tcp_connect");/設置JButton的屬性值Tcp_connect.addActionListener(this);/監聽按鈕的行為/Tc

37、p SYN掃描按鈕Tcp_SYN.setBounds(17,363,140,30);Tcp_SYN.setActionCommand("Tcp_SYN");/設置JButton的屬性值Tcp_SYN.addActionListener(this);/監聽按鈕的行為/Icmp echo掃描按鈕ICMP_echo.setBounds(17,413,140,30);ICMP_echo.setActionCommand("ICMP_echo");/設置JButton的屬性值ICMP_echo.addActionListener(this);/監聽按鈕的行為/退出

38、掃描按鈕Exit.setBounds(17,463,140,30);Exit.setActionCommand("Exit");Exit.addActionListener(this);/保存結果按鈕save.setBounds(17,513,140,30);save.setActionCommand("save");save.addActionListener(this);/掃描狀態欄labelState.setBounds(180,13,50,20);labelScanning.setBounds(240,8,120,30);Result1.setB

39、ounds(180,40,210,332);Result1.setEditable(false);Result1.setBackground(Color.GREEN);/圖片的顯示photo.setBounds(393,13,283,360);/掃描結果欄labelResult.setBounds(180,390,50,20);Result2.setBounds(180,420,500,200);Result2.setEditable(false);Result2.setBackground(Color.GREEN);/設置錯誤提示框Container ErrorDisplay = DLGEr

40、ror.getContentPane();ErrorDisplay.setLayout(null);ErrorDisplay.add(DLGINFO);ErrorDisplay.add(OK);OK.setActionCommand("OK");OK.addActionListener(this);/將組件添加到主窗體Frame.setLayout(null);Frame.setResizable(false);/窗口大小設置為不可變Frame.add(labelIPStart);Frame.add(labelIPEnd);Frame.add(labelPortStart)

41、;Frame.add(labelPortEnd);Frame.add(labelThread);Frame.add(labelTimeOut);Frame.add(hostNameStart);Frame.add(hostNameEnd);Frame.add(PortStart);Frame.add(PortEnd);Frame.add(ThreadNum);Frame.add(time);Frame.add(Tcp_connect);Frame.add(Tcp_SYN);Frame.add(ICMP_echo);Frame.add(Exit);Frame.add(save);Frame.ad

42、d(labelState);Frame.add(labelScanning);Frame.add(Result1);Frame.add(photo);Frame.add(labelResult);Frame.add(Result2);Frame.setVisible(true);/幾個產生錯誤的原因Overridepublic void actionPerformed(ActionEvent arg0) / TODO Auto-generated method stubString cmd = arg0.getActionCommand();int minPort,maxPort,thread

43、Num;InetAddress hostAddressStart = null;InetAddress hostAddressEnd = null;try/獲取輸入的相關數據minPort = Integer.parseInt(PortStart.getText();maxPort = Integer.parseInt(PortEnd.getText();threadNum = Integer.parseInt(ThreadNum.getText();catch(NumberFormatException e1)DLGError.setBounds(300,280,300,200);DLGIN

44、FO.setText("靚仔,端口號、線程號必須得是整數");DLGINFO.setBounds(25,15,350,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;/輸入信息錯誤處理if(minPort < 0)|(maxPort > 65536)|(minPort > maxPort)DLGError.setBounds(300,280,400,200);DLGINFO.setText("端口必須在065536之間,且起始端口應小于結束端口");DLGI

45、NFO.setBounds(25,15,350,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;if(threadNum > 200)|(threadNum < 0)DLGError.setBounds(300,280,300,200);DLGINFO.setText("線程數應是在1200之間的整數");DLGINFO.setBounds(25,15,200,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);retur

46、n;/如果按了保存按鈕if (cmd.equals("save")tryBufferedWriter bw = new BufferedWriter(new FileWriter("G:java語言文件DXCDKSMQ2掃描結果.txt");bw.write(ScanTcpConnect.str);bw.newLine();ScanTcpConnect.str = ""bw.close();catch(IOException e1)e1.printStackTrace();/如果按了開始掃描按鈕if (cmd.equals("

47、;Tcp_connect")|cmd.equals("Tcp_SYN")|cmd.equals("ICMP_echo")Result1.setText(null);Result2.setText(null);/相關顯示,.append()的用途是將后面的字符串接到原來的字符串上面來labelScanning.setText("開始掃描.");Result1.append("正在掃描"+hostNameStart.getText()+", 線程數:"+threadNum+"n&

48、quot;);Result1.append("起始端口:"+minPort+" 結束端口: "+maxPort+"n");/j+;tryScanTcpConnect.hostAddress = InetAddress.getByName(Scanner2.hostNameStart.getText();ScanTcpConnect.time = Integer.parseInt(Scanner2.time.getText();catch(UnknownHostException e1)DLGError.setBounds(300,28

49、0,300,200);DLGINFO.setText("靚仔,你的IP或域名輸入好像有誤哦");DLGINFO.setBounds(25,15,200,20);OK.setBounds(110,50,60,30);DLGError.setVisible(true);return;/多線程核心算法for(int i = minPort;i <= maxPort;)if(i+threadNum) <= maxPort)new ScanTcpConnect(i,i+threadNum).run();/引用Scan類的run()方法i += threadNum;else

50、new ScanTcpConnect(i,maxPort).run();i += threadNum;tryThread.sleep(1);/設置睡眠時間catch(InterruptedException e1)e1.printStackTrace();Result1.append("掃描完成!");labelScanning.setText("掃描完成!");/如果按了OK按鈕if(cmd.equals("OK")DLGError.dispose();/釋放資源/如果按了退出掃描按鈕if(cmd.equals("Eixt")System.exit(0);/非正常退出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論