基于多線程的端口掃描程序課程設(shè)計報告_第1頁
基于多線程的端口掃描程序課程設(shè)計報告_第2頁
基于多線程的端口掃描程序課程設(shè)計報告_第3頁
基于多線程的端口掃描程序課程設(shè)計報告_第4頁
基于多線程的端口掃描程序課程設(shè)計報告_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余13頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、滁州學(xué)院課程設(shè)計報告課程名稱:設(shè)計題目:基于多線程的端口掃描程序院部:計算機(jī)與信息工程學(xué)院專業(yè):網(wǎng)絡(luò)工程組別:第六組起止日期:起12年12月31日2013年1月6日指導(dǎo)教師:計算機(jī)與信息工程學(xué)院二。一二年制課程設(shè)計任務(wù)書課程設(shè)計題目;良于多線程的端口掃描程序組長學(xué)號班級院部計算機(jī)與信息工程專業(yè)網(wǎng)絡(luò)工程組員指導(dǎo)教師課程設(shè)計目的鍛煉Java高級編程的能力課程設(shè)計所需環(huán)境PG Windows xp, JCretor Pro課程設(shè)計任務(wù)要求使用Socket實(shí)現(xiàn)簡單的端口掃描功能。分別針對 TCP 和UDP采用多線程技術(shù)實(shí)現(xiàn)端口掃描,給出掃描結(jié)果。課程設(shè)計工作進(jìn)度計劃序號起止日期工作內(nèi)容分工情況1分析題

2、目,搜索相關(guān)資料。2整理相關(guān)資料,確定程序分 工,布置任務(wù)。3編寫程序代碼。4調(diào)試改進(jìn)程序。5編寫課程設(shè)計報告與 PPT指導(dǎo)教師簽字:年月日系(教研室)審核意見:系(教研室)主任簽字:年月日1需求分析 01.1 1 網(wǎng)絡(luò)安全 01.2 課程背景 01.3 掃描器 01.4 多線程掃描器介紹 1錯誤 ! 未定義書簽。錯誤! 未定義書簽。錯誤! 未定義書簽。錯誤 ! 未定義書簽。1.5 端口掃描 22 概要設(shè)計 32.1 整體框架設(shè)計 32.2 流程圖描述 33 詳細(xì)設(shè)計 33.1 端口掃描線程啟動 33.2 GUI 圖形界面 53.3 按鈕監(jiān)聽及異常處理 64 調(diào)試與操作說明 84.1 運(yùn)行界面

3、 84.2 掃描結(jié)果 84.3 錯誤提示 85 課程設(shè)計總結(jié)與體會 86 參考文獻(xiàn) 97 致謝 98 附錄 01 需求分析1.1 1 網(wǎng)絡(luò)安全二十一世紀(jì)是信息化、網(wǎng)絡(luò)化的世紀(jì),信息是社會發(fā)展的重要資源。信息安全保障能力是一個國家綜合國力、經(jīng)濟(jì)競爭實(shí)力和生存能力的重要組成部分,是世界各國在奮力攀登的制高點(diǎn)。網(wǎng)絡(luò)安全是指網(wǎng)絡(luò)系統(tǒng)的硬件、軟件及其系統(tǒng)中的數(shù)據(jù)受到保護(hù),不因偶然的或者惡意的原因而遭到破壞、更改、泄露,系統(tǒng)連續(xù)可靠正常地運(yùn)行。網(wǎng)絡(luò)安全包括技術(shù)領(lǐng)域和非技術(shù)領(lǐng)域兩大部分: 非技術(shù)領(lǐng)域包括一些制度、政策、管理、安全意識、實(shí)體安全等方面的內(nèi)容;技術(shù)領(lǐng)域包括隱患掃描、防火墻、入侵檢測、訪問控制、虛

4、擬專用網(wǎng)、CA認(rèn)證、操作系統(tǒng)等方面的內(nèi)容。這些技術(shù)的目標(biāo)是保證信息的可控性、可用性、保密性、完整性、和不可抵賴性。端口掃描屬于安全探測技術(shù)范疇,對應(yīng)于網(wǎng)絡(luò)攻擊技術(shù)中的網(wǎng)絡(luò)信息收集技術(shù)。1.2 課程背景隨著 Internet 的不斷發(fā)展,信息技術(shù)已成為促進(jìn)經(jīng)濟(jì)發(fā)展、社會進(jìn)步的巨大推動力。端口掃描技術(shù)是網(wǎng)絡(luò)安全掃描技術(shù)一個重要的網(wǎng)絡(luò)安全技術(shù)。與防火墻、入侵檢測系統(tǒng)互相配合,能夠有效提高網(wǎng)絡(luò)的安全性。安全掃描是安全技術(shù)領(lǐng)域中重要的一類。通過掃描能自動檢測遠(yuǎn)端或本地主機(jī)系統(tǒng)信息,包括主機(jī)的基本信息( 如計算機(jī)名、域名、組名、操作系統(tǒng)型等 ) 、服務(wù)信息、用戶信息以及漏洞信息,它的重要性在于能夠?qū)W(wǎng)絡(luò)進(jìn)

5、行安全評估,及時發(fā)現(xiàn)安全隱患,防患于未然。網(wǎng)絡(luò)的安全狀況取決于網(wǎng)絡(luò)中最薄弱的環(huán)節(jié),任何疏忽都有可能引入不安全的因素,最有效的方法是定期對網(wǎng)絡(luò)系統(tǒng)進(jìn)行安全分析,及時發(fā)現(xiàn)并修正存在的脆弱,保證系統(tǒng)安全。國外安全掃描技術(shù)的歷史可以追溯到20 世紀(jì) 90 年代,當(dāng)時因特網(wǎng)剛剛起步,但是在過去的十年內(nèi),掃描技術(shù)飛速發(fā)展,迄今為止,其掃描技術(shù)已經(jīng)非常完善,但是在全面性,隱蔽性和智能性上還有待提高。安全掃描從最初專門為UNIX系統(tǒng)而編寫的一些只有簡單功能的小程序發(fā)展到現(xiàn)在,已經(jīng)出現(xiàn)了可以運(yùn)行多個操作系統(tǒng)平臺上的,具有復(fù)雜功能的系統(tǒng)程序。國內(nèi)的掃描技術(shù)是在國外的掃描器基礎(chǔ)上發(fā)展起來的。其中有一些專門從事安全技

6、術(shù)的公司。這些公司的掃描器以硬件為主,其特點(diǎn)是執(zhí)行速度快,不像軟件一樣受到安裝主機(jī)系統(tǒng)的限制。然而對于更多的基于主機(jī)的端口掃描而言,簡單,實(shí)用,可靠才是它們的長處。1.3 掃描器掃描器是一種自動檢測遠(yuǎn)程或本地主機(jī)安全性弱點(diǎn)的程序,通過使用掃描器你可以不留痕跡的發(fā)現(xiàn)遠(yuǎn)程服務(wù)器的各種TCP端口的分配。這就能讓我們間接的或直觀的了解到遠(yuǎn)程主機(jī)所存在的安全問題。為了保證網(wǎng)絡(luò)中計算機(jī)的安全性, 必須采取主動策略, 快速、及時、準(zhǔn) 確、安全的檢測出網(wǎng)絡(luò)中計算機(jī)及防火墻開放的和未開放的端口。計算機(jī)端口掃描技術(shù)就是 這種主動防御策略實(shí)現(xiàn)的重要技術(shù)手段。掃描器采用模擬攻擊的形式對目標(biāo)可能存在的已知安全漏洞進(jìn)行逐

7、項檢查。目標(biāo)可以是工作站、服務(wù)器、交換機(jī)、數(shù)據(jù)庫應(yīng)用等各種對象。然后根據(jù)掃描結(jié)果向系統(tǒng)管理員提供周密可靠的安全性分析報告,為提高網(wǎng)絡(luò)安全整體水平產(chǎn)生重要依據(jù)。在網(wǎng)絡(luò)安全體系的建設(shè)中,安全掃描工具花費(fèi)低、效果好、見效快、與網(wǎng)絡(luò)的運(yùn)行相對對立、安裝運(yùn)行簡單,可以大規(guī)模減少安全管理員的手工勞動,有利于保持全網(wǎng)安全政策的統(tǒng)一和穩(wěn)定。1.4 多線程掃描器介紹在 java 中,組件放置在窗體上的方式是完全基于代碼的。組件放置在窗體上的方式通常不是通過絕對坐標(biāo)控制,而是由“布局管理器”根據(jù)組件加入的順序決定其位置。每個容器都有一個屬于的自己布局管理器。使用不同的布局管理器,組件大小,位置和形狀將大不相同。表

8、格型布局管理器將容器劃分成為一個多行多列的表格,表格的大小全部相同,是由其中最大的組件所決定。通過add 方法可以將組件一一放在每個表格中。表格包型布局與表格型布局有些相近,但與表格型布局比較起來,表格包型更加靈活,更加復(fù)雜。通常表格包型布局,我們可以設(shè)定每個格子的大小,間隙等。每個正在系統(tǒng)上運(yùn)行的程序都是一個進(jìn)程。每個進(jìn)程包含一到多個線程。進(jìn)程也可能是整個程序或者是部分程序的動態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級的進(jìn)程,它負(fù)責(zé)在單個程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個線程的調(diào)度和執(zhí)行。線程是程序

9、中一個單一的順序控制流程. 在單個程序中同時運(yùn)行多個線程完成不同的工作 , 稱為多線程.線程和進(jìn)程的區(qū)別在于, 子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間, 而多個線程則共享數(shù)據(jù)空間 , 每個線程有自己的執(zhí)行堆棧和程序計數(shù)器為其執(zhí)行上下文. 多線程主要是為了節(jié)約CPU寸間,發(fā)揮利用,根據(jù)具體情況而定.線程的運(yùn)行中需要使用計算機(jī)的內(nèi)存資源和CPU在計算機(jī)編程中,一個基本的概念就是同時對多個任務(wù)加以控制。許多程序設(shè)計問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進(jìn)程??梢酝ㄟ^多種途徑達(dá)到這個目的。最開始的時候,那些掌握機(jī)器低級語言的程序員編寫一些“中斷服務(wù)例程”,主進(jìn)程的暫停是通過硬件

10、級的中斷實(shí)現(xiàn)的。盡管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價高昂問題。中斷對那些實(shí)時性很強(qiáng)的任務(wù)來說是很有必要的。但對于其他許多問題,只要求將問題劃分進(jìn)入獨(dú)立運(yùn)行的程序片斷中,使整個程序能更迅速地響應(yīng)用戶的請求。最開始,線程只是用于分配單個處理器的處理時間的一種工具。但假如操作系統(tǒng)本身支持多個處理器,那么每個線程都可分配給一個不同的處理器,真正進(jìn)入“并行運(yùn)算”狀態(tài)。從程序設(shè)計語言的角度看,多線程操作最有價值的特性之一就是程序員不必關(guān)心到底使用了多少個處理器。程序在邏輯意義上被分割為數(shù)個線程;假如機(jī)器本身安裝了多個處理器,那么程序會運(yùn)行得更快,毋需作出任何特殊的調(diào)校。根據(jù)

11、前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個問題:共享資源!如果有多個線程同時運(yùn)行,而且它們試圖訪問相同的資源,就會遇到一個問題。舉個例子來說,兩個線程不能將信息同時發(fā)送給一臺打印機(jī)。為解決這個問題,對那些可共享的資源來說(比如打印機(jī)),它們在使用期間必須進(jìn)入鎖定狀態(tài)。所以一個線程可將資源鎖定,在完成了它的任務(wù)后,再解開(釋放)這個鎖,使其他線程可以接著使用同樣的資源。多線程是為了同步完成多項任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時間需要完成多項任務(wù)的時候?qū)崿F(xiàn)的。線程優(yōu)先級被線程調(diào)度用來判定何時哪個線程允許運(yùn)行。理論上,優(yōu)先級高的線程比優(yōu)

12、先級低的線程獲得更多的CPU時間。實(shí)際上,線程獲得的CPU時間通常由包括優(yōu)先級在內(nèi)的多個因素決定(例如,一個實(shí)行多任務(wù)處理的操作系統(tǒng)如何更有效的利用CPU時間)。一個優(yōu)先級高的線程自然比優(yōu)先級低的線程優(yōu)先。舉例來說,當(dāng)?shù)蛢?yōu)先級線程正在運(yùn)行,而一個高優(yōu)先級的線程被恢復(fù)(例如從沉睡中或等待I/O 中),它將搶占低優(yōu)先級線程所使用的CPU。理論上,等優(yōu)先級線程有同等的權(quán)利使用CPU但你必須小心了。記住, Java是被設(shè)計成能在很多環(huán)境下工作的。一些環(huán)境下實(shí)現(xiàn)多任務(wù)處理從本質(zhì)上與其他環(huán)境不同。為安全起見,等優(yōu)先級線程偶爾也受控制。這保證了所有線程在無優(yōu)先級的操作系統(tǒng)下都有機(jī)會運(yùn)行。實(shí)際上,在無優(yōu)先級的

13、環(huán)境下,多數(shù)線程仍然有機(jī)會運(yùn)行,因為很多線程不可避免的會遭遇阻塞,例如等待輸入輸出。遇到這種情形,阻塞的線程掛起,其他線程運(yùn)行。但是如果你希望多線程執(zhí)行的順利的話,最好不要采用這種方法。同樣,有些類型的任務(wù)是占CPU的。對于這些支配 CPU類型的線程,有時你希望能夠支配它們,以便使其他線程可以運(yùn)行。多個線程同時讀寫同一份共享資源的時候,可能會引起沖突。這時候,我們需要引入線程“同步”機(jī)制,即各位線程之間要有個先來后到,不能一窩蜂擠上去搶作一團(tuán)。同步的關(guān)鍵是管程,管程是一個互斥獨(dú)占鎖定的對象,在給定的時間,僅有一個線程獲得管程,當(dāng)一個線程需要鎖定時,他必須進(jìn)入管程。1.5 端口掃描一個端口就是一

14、個潛在的通信通道,也就是一個入侵通道。對目標(biāo)計算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。進(jìn)行掃描的方法很多,可以是手工進(jìn)行掃描,也可以用端口掃描軟件進(jìn)行。在手工進(jìn)行掃描時,需要熟悉各種命令。對命令執(zhí)行后的輸出進(jìn)行分析。用掃描軟件進(jìn)行掃描時,許多掃描器軟件都有分析數(shù)據(jù)的功能。通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞。2概要設(shè)計2.1 整體框架設(shè)計經(jīng)過我們組員的思考很研究,得出了以下幾個模塊的簡單端口掃描器,整個端口掃描器 的核心模塊是是端口掃描系統(tǒng),它由許多子模塊組成,其結(jié)構(gòu)如下圖所示:TCP端口掃描程序2.2 流程圖描述開始基本信息檢測模塊找的參ip數(shù)4一設(shè)輸入線程數(shù)模 塊通

15、 A過scoket匹配過濾原則來進(jìn)行端口掃描IP地址是否存在7測1匹配1是否在參數(shù)范圍中結(jié)果輸模塊(通過一GUI界卸輸計得到的結(jié)果)GUI界面中打印出來讀取應(yīng)答內(nèi)容3詳細(xì)設(shè)計3.1端口掃描線程啟動掃描程序主要運(yùn)用Socket編程。對于一個工作齊全的Socket ,其工作過程包含以下四個就基本步驟:創(chuàng)建通信雙方的socket鏈接,即分別為服務(wù)器和客戶端創(chuàng)建Socket對象,建立Socket連接;打開連接到Socket的輸入流和輸出流;按照一定的協(xié)議對Socket進(jìn)行讀/寫操作;關(guān)閉連接。以下是程序代碼/ 運(yùn)行 掃描端口public void run()int i;Socket theTCPsoc

16、ket;for(itrytheTCPsocket=new Socket(hostAddress,i);theTCPsocket.close();switch(i)case 21:break;case 23:break;case 25:break;case 80:break;case 110:break;case 139:break;catch (IOException e)if (i=MAX_port)1.2 GUI 圖形界面圖形用戶界面是軟件產(chǎn)品和用戶交互的接口,是軟件產(chǎn)品中用戶直接可以看到并直接操作的部分。public class ThreadScanpublic static JFram

17、e main=new JFrame(" 基于 JAVA的多線程 TCP端口掃描程序");public static JTextArea Result=new JTextArea("",4,43);public static JTextField hostname=new JTextField("localhost",8);public static JTextField minPort=new JTextField("0",4);public static JTextField maxPort=new JTextF

18、ield("1000",4);public static JTextField maxThread=new JTextField("100",3);public static JDialog DLGError=new JDialog(main,"錯誤 !");public static Label DLGINFO=new Label("");public static Label status=new Label("掃描狀態(tài): 未開始 ");public static void main(Str

19、ing args) main.setSize(500,220);/main.setLocation(300,300);main.setResizable(false);DLGError.setSize(300,100);DLGError.setLocation(400,400);JPanel mainPanel = new JPanel();Label H=new Label("ip 或域名 :");Label P1=new Label(" 端口范圍:");Label P2=new Label("");Label TNUM=new L

20、abel(" 線程數(shù) :");Label RST=new Label(" 掃描結(jié)果: ");Label con=new Label(" ");Result.setLineWrap(true);Result.setEditable(false);JButton OK = new JButton(" 確定 ");JButton Submit = new JButton("確定");JButton Cancel = new JButton("取消");Container mPane

21、l = main.getContentPane();Container dPanel = DLGError.getContentPane();mPanel.setLayout(new FlowLayout(FlowLayout.LEFT);dPanel.setLayout(new FlowLayout(FlowLayout.CENTER);mPanel.add(H);mPanel.add(hostname);mPanel.add(P1);mPanel.add(minPort);mPanel.add(P2);mPanel.add(maxPort);mPanel.add(TNUM);mPanel.

22、add(maxThread);mPanel.add(RST);mPanel.add(Result);mPanel.add(con);mPanel.add(Submit);mPanel.add(Cancel);mPanel.add(status);dPanel.add(DLGINFO);dPanel.add(OK);main.setVisible(true);Submit.addActionListener(new SubmitAction();Cancel.addActionListener(new CancleAction();OK.addActionListener(new OKActio

23、n();1.3 按鈕監(jiān)聽及異常處理本部分主要對各個按鈕進(jìn)行監(jiān)聽。是整個程序的時間驅(qū)動設(shè)計部分。并且顯示運(yùn)行結(jié)果。class SubmitAction implements ActionListenerpublic void actionPerformed (ActionEvent a)int minPort;int maxPort;int maxThread;trycatch(NumberFormatException e)return;trycatch(UnknownHostException e)return;if(minPort<0 | minPort>65535 | min

24、Port>maxPort)return;else TCPThread.MIN_port=minPort;if(maxPort<0 | maxPort>65535 | maxPort<minPort)return;else TCPThread.MAX_port=maxPort;if(maxThread<1 | maxThread>200)return;for(int i=0;i<maxThread;i+)new TCPThread("T" + i,i).start();4 調(diào)試與操作說明4.1 運(yùn)行界面對本機(jī)進(jìn)行多線程的端口掃描,即在

25、ip 或域名中輸入localhost 可對本機(jī)進(jìn)行端口進(jìn)行掃描,也可輸入其他的ip 地址或域名,可自行設(shè)置端口范圍如從0 到 1000,最大不超過65535,可設(shè)置線程數(shù)范圍為0200 ,掃描狀態(tài)為未開始,點(diǎn)擊確定即可運(yùn)行程序。4.2 掃描結(jié)果程序運(yùn)行后,可以得到相關(guān)的端口掃描過程,其中掃描狀態(tài)顯示正在掃描的端口號,如下:程序運(yùn)行結(jié)束后在掃描結(jié)果中顯示掃描結(jié)束,并在掃描狀態(tài)中顯示完成。4.3 錯誤提示程序中往往由于一些數(shù)據(jù)不正確會造成運(yùn)行后錯誤,所以在程序中添加了異常處理機(jī)制,其中遇到的錯誤可能有以下幾種:當(dāng)端口號或線程數(shù)不是整數(shù)時會出現(xiàn)如下錯誤:當(dāng) ip 地址或域名錯誤時,會出現(xiàn)如下錯誤:當(dāng)

26、最小端口數(shù)不在065535且不小于最大端口數(shù)時會出現(xiàn)如下錯誤:當(dāng)最大端口數(shù)不在065535且不大于最小端口數(shù)時會出現(xiàn)如下錯誤:當(dāng)線程數(shù)范圍不在0200 時會出現(xiàn)如下錯誤:5 課程設(shè)計總結(jié)與體會本組成員共同設(shè)計的基于多線程的端口掃描程序基本滿足了課程設(shè)計的要求,能夠很好地對本機(jī)或其他電腦端口進(jìn)行掃描,同時也處理了程序中可能出現(xiàn)的錯誤。本次課程設(shè)計,使我們對計算機(jī)網(wǎng)絡(luò)這門課程有了更深入的理解。計算機(jī)網(wǎng)絡(luò)是一門實(shí)踐性較強(qiáng)的課程,為了學(xué)好這門課程,必須在掌握理論知識的同時,加強(qiáng)上機(jī)實(shí)踐。要想把課程設(shè)計做的更好,就要學(xué)會參考一定的資料,吸取別人的經(jīng)驗,加強(qiáng)團(tuán)隊合作。在本課程設(shè)計中,我們明白了理論與實(shí)際應(yīng)

27、用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計技能以及合作能力。這次課程設(shè)計同樣提高了我們的綜合運(yùn)用所學(xué)知識的能力。課程設(shè)計程序的編寫需要有耐心,有些事情看起來很復(fù)雜,但問題需要一點(diǎn)一點(diǎn)去解決,分析問題,把問題模塊化,劃分成小塊以后就逐個去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。通過這段時間的課程設(shè)計,我們認(rèn)識到計算機(jī)網(wǎng)絡(luò)是一門比較難的課程。需要多花時間學(xué)習(xí)。這次的課程設(shè)計培養(yǎng)了我們實(shí)際分析問題、編程和動手能力,使我們掌握了計算機(jī)網(wǎng)絡(luò)課程設(shè)計的基本技能,提高了我們適應(yīng)實(shí)際,運(yùn)用于實(shí)際生活的能力。這次的課程設(shè)計提高了我們對于

28、專業(yè)課的學(xué)習(xí)熱情,使我們能夠更加深入的理解課本內(nèi)容,對 計算機(jī)網(wǎng)絡(luò)也有了進(jìn)一步的理解和認(rèn)識,同時也理解了將課本內(nèi)容與實(shí)際生活相結(jié)合的好處。6 參考文獻(xiàn)1 趙生慧 .Java 面向?qū)ο蟪绦蛟O(shè)計. 北京:中國水利水電出版社,2010。2 謝希仁. 計算機(jī)網(wǎng)絡(luò)(第五版). 北京:電子工業(yè)出版社,2011 。3 吳功宜. 計算機(jī)網(wǎng)絡(luò)(第二版). 北京:清華大學(xué)出版社,2007。4 楊靜宇 . Java 程序設(shè)計與應(yīng)用開發(fā)( 第 2 版 ) M. 北京 : 清華大學(xué)出版社, 20097 致謝非常感謝老師耐心的指導(dǎo),在實(shí)驗過程中給出指導(dǎo)并給幫助分析思路,給我們提供了可行的方案設(shè)計思路,在實(shí)驗過程中指出不足

29、之處,為能夠成功的完成課程設(shè)計做了很大的貢獻(xiàn);非常感謝各位組員的積極配合,一起分析題目,整理思路,努力思考解決方案,畫出方案流程圖,并進(jìn)行了嚴(yán)密的算法分析,構(gòu)造嚴(yán)謹(jǐn)?shù)某绦蚩蚣?,然后各自完成自己?fù)責(zé)的模塊,最后一起整理出完整的程序,一起進(jìn)行調(diào)試分析,評估程序的嚴(yán)謹(jǐn)性,找出不足。完善實(shí)驗內(nèi)容,整理資料,編寫文檔。8 附錄源代碼:import .*;import java.io.*;/import java.util.*;import java.awt.*;import javax.swing.*;class TCPThread extends Threadpublic static InetAdd

30、ress hostAddress;public static int MIN_port;public static int MAX_port;private int threadnum;public TCPThread(String name,int threadnum)super(name);this.threadnum = threadnum;public void run()int i;Socket theTCPsocket;for (i = MIN_port+threadnum; i < MAX_port; i += Integer.parseInt trytheTCPsocke

31、t=new Socket(hostAddress,i);theTCPsocket.close();switch(i)case 21:break;case 23:break;case 25:break;case 80:break;case 110:break;case 139:break;catch (IOException e)if (i=MAX_port)class CancleAction implements ActionListenerpublic void actionPerformed (ActionEvent e)System.exit(1);class SubmitAction

32、 implements ActionListenerpublic void actionPerformed (ActionEvent a)int minPort;int maxPort;int maxThread;trycatch(NumberFormatException e)return;tryTCPThread.hostAddress=InetAddress.getByName catch(UnknownHostException e)return;if(minPort<0 | minPort>65535 | minPort>maxPort)return;else TC

33、PThread.MIN_port=minPort;if(maxPort<0 | maxPort>65535 | maxPort<minPort)return;else TCPThread.MAX_port=maxPort; if(maxThread<1 | maxThread>200) return;for(int i=0;i<maxThread;i+)new TCPThread("T" + i,i).start();class OKAction implements ActionListenerpublic void actionPer

34、formed (ActionEvent e)public class ThreadScan基于JAVA的多線程TCP端口掃描程public static JFrame main=new JFrame("序 ");public static JTextArea Result=new JTextArea("",4,43);public static JTextField hostname=new JTextField("localhost",8); public static JTextField minPort=new JTextFie

35、ld("0",4);public static JTextField maxPort=new JTextField("1000",4);public static JTextField maxThread=new JTextField("100",3);public static JDialog DLGError=new JDialog(main,"錯誤 !");public static Label DLGINFO=new Label("");public static Label status=new Label("掃描狀態(tài): 未開始 ");public static void main(String args)main.setSize(500,220);/main.set

溫馨提示

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

評論

0/150

提交評論