基于多線程的端口掃描程序課程設(shè)計(jì)報(bào)告_第1頁
基于多線程的端口掃描程序課程設(shè)計(jì)報(bào)告_第2頁
基于多線程的端口掃描程序課程設(shè)計(jì)報(bào)告_第3頁
基于多線程的端口掃描程序課程設(shè)計(jì)報(bào)告_第4頁
基于多線程的端口掃描程序課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

2、容分工情況12012.12.312013.01.01分析題目,搜索相關(guān)資料。22013.01.012013.01.02整理相關(guān)資料,確定程序分工,布置任務(wù)。32013.01.022013.01.03編寫程序代碼。42013.01.042013.01.05調(diào)試改進(jìn)程序。52013.01.052013.01.06編寫課程設(shè)計(jì)報(bào)告與ppt指導(dǎo)教師簽字: 年 月 日系(教研室)審核意見:系(教研室)主任簽字: 年 月 日課程設(shè)計(jì)任務(wù)書目 錄1需求分析11.1網(wǎng)絡(luò)安全11.2課程背景11.3掃描器11.4多線程掃描器介紹21.4.1布局管理器21.4.2多線程21.4.3線程優(yōu)先級31.4.4線程同步3

3、1.5端口掃描42概要設(shè)計(jì)42.1整體框架設(shè)計(jì)42.2流程圖描述53詳細(xì)設(shè)計(jì)63.1 端口掃描線程啟動63.2 gui圖形界面73.3 按鈕監(jiān)聽及異常處理94調(diào)試與操作說明114.1運(yùn)行界面114.2掃描結(jié)果114.3錯(cuò)誤提示125課程設(shè)計(jì)總結(jié)與體會136參考文獻(xiàn)137致謝148附錄1561需求分析1.1網(wǎng)絡(luò)安全二十一世紀(jì)是信息化、網(wǎng)絡(luò)化的世紀(jì),信息是社會發(fā)展的重要資源。信息安全保障能力是一個(gè)國家綜合國力、經(jīng)濟(jì)競爭實(shí)力和生存能力的重要組成部分,是世界各國在奮力攀登的制高點(diǎn)。網(wǎng)絡(luò)安全是指網(wǎng)絡(luò)系統(tǒng)的硬件、軟件及其系統(tǒng)中的數(shù)據(jù)受到保護(hù),不因偶然的或者惡意的原因而遭到破壞、更改、泄露,系統(tǒng)連續(xù)可靠正常

4、地運(yùn)行。網(wǎng)絡(luò)安全包括技術(shù)領(lǐng)域和非技術(shù)領(lǐng)域兩大部分:非技術(shù)領(lǐng)域包括一些制度、政策、管理、安全意識、實(shí)體安全等方面的內(nèi)容;技術(shù)領(lǐng)域包括隱患掃描、防火墻、入侵檢測、訪問控制、虛擬專用網(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ù)一個(gè)重要的網(wǎng)絡(luò)安全技術(shù)。與防火墻、入侵檢測系統(tǒng)互相配合,能夠有效提高網(wǎng)絡(luò)的安全性。安全掃描是安全技術(shù)領(lǐng)域中重要的一類。通

5、過掃描能自動檢測遠(yuǎn)端或本地主機(jī)系統(tǒng)信息,包括主機(jī)的基本信息(如計(jì)算機(jī)名、域名、組名、操作系統(tǒng)型等)、服務(wù)信息、用戶信息以及漏洞信息,它的重要性在于能夠?qū)W(wǎng)絡(luò)進(jìn)行安全評估,及時(shí)發(fā)現(xiàn)安全隱患,防患于未然。網(wǎng)絡(luò)的安全狀況取決于網(wǎng)絡(luò)中最薄弱的環(huán)節(jié),任何疏忽都有可能引入不安全的因素,最有效的方法是定期對網(wǎng)絡(luò)系統(tǒng)進(jìn)行安全分析,及時(shí)發(fā)現(xiàn)并修正存在的脆弱,保證系統(tǒng)安全。國外安全掃描技術(shù)的歷史可以追溯到20世紀(jì)90年代,當(dāng)時(shí)因特網(wǎng)剛剛起步,但是在過去的十年內(nèi),掃描技術(shù)飛速發(fā)展,迄今為止,其掃描技術(shù)已經(jīng)非常完善,但是在全面性,隱蔽性和智能性上還有待提高。安全掃描從最初專門為unix系統(tǒng)而編寫的一些只有簡單功能的小

6、程序發(fā)展到現(xiàn)在,已經(jīng)出現(xiàn)了可以運(yùn)行多個(gè)操作系統(tǒng)平臺上的,具有復(fù)雜功能的系統(tǒng)程序。國內(nèi)的掃描技術(shù)是在國外的掃描器基礎(chǔ)上發(fā)展起來的。其中有一些專門從事安全技術(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ì)算機(jī)的安全性,必須采取主動策略,快速、及時(shí)、準(zhǔn)確、安全的檢測出網(wǎng)絡(luò)中計(jì)算機(jī)及防

7、火墻開放的和未開放的端口。計(jì)算機(jī)端口掃描技術(shù)就是這種主動防御策略實(shí)現(xiàn)的重要技術(shù)手段。掃描器采用模擬攻擊的形式對目標(biāo)可能存在的已知安全漏洞進(jìn)行逐項(xiàng)檢查。目標(biāo)可以是工作站、服務(wù)器、交換機(jī)、數(shù)據(jù)庫應(yīng)用等各種對象。然后根據(jù)掃描結(jié)果向系統(tǒng)管理員提供周密可靠的安全性分析報(bào)告,為提高網(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多線程掃描器介紹1.4.1布局管理器在java中,組件放置在窗體上的方式是完全基于代碼的。組件放置在窗體上的方式通常不是通過絕

8、對坐標(biāo)控制,而是由“布局管理器”根據(jù)組件加入的順序決定其位置。每個(gè)容器都有一個(gè)屬于的自己布局管理器。使用不同的布局管理器,組件大小,位置和形狀將大不相同。表格型布局管理器將容器劃分成為一個(gè)多行多列的表格,表格的大小全部相同,是由其中最大的組件所決定。通過add方法可以將組件一一放在每個(gè)表格中。表格包型布局與表格型布局有些相近,但與表格型布局比較起來,表格包型更加靈活,更加復(fù)雜。通常表格包型布局,我們可以設(shè)定每個(gè)格子的大小,間隙等。1.4.2多線程每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段

9、,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。線程是程序中一個(gè)單一的順序控制流程.在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程.線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約cpu時(shí)間,發(fā)揮利用,根據(jù)具體情況而定. 線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和cpu。在計(jì)算機(jī)編程中,一個(gè)基本的概念就是同時(shí)對多個(gè)任務(wù)加以控制。許多程序設(shè)計(jì)問題都要求程序能夠停下手頭的工作

10、,改為處理其他一些問題,再返回主進(jìn)程。可以通過多種途徑達(dá)到這個(gè)目的。最開始的時(shí)候,那些掌握機(jī)器低級語言的程序員編寫一些“中斷服務(wù)例程”,主進(jìn)程的暫停是通過硬件級的中斷實(shí)現(xiàn)的。盡管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價(jià)高昂問題。中斷對那些實(shí)時(shí)性很強(qiáng)的任務(wù)來說是很有必要的。但對于其他許多問題,只要求將問題劃分進(jìn)入獨(dú)立運(yùn)行的程序片斷中,使整個(gè)程序能更迅速地響應(yīng)用戶的請求。最開始,線程只是用于分配單個(gè)處理器的處理時(shí)間的一種工具。但假如操作系統(tǒng)本身支持多個(gè)處理器,那么每個(gè)線程都可分配給一個(gè)不同的處理器,真正進(jìn)入“并行運(yùn)算”狀態(tài)。從程序設(shè)計(jì)語言的角度看,多線程操作最有價(jià)值的特性之

11、一就是程序員不必關(guān)心到底使用了多少個(gè)處理器。程序在邏輯意義上被分割為數(shù)個(gè)線程;假如機(jī)器本身安裝了多個(gè)處理器,那么程序會運(yùn)行得更快,毋需作出任何特殊的調(diào)校。根據(jù)前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個(gè)問題:共享資源!如果有多個(gè)線程同時(shí)運(yùn)行,而且它們試圖訪問相同的資源,就會遇到一個(gè)問題。舉個(gè)例子來說,兩個(gè)線程不能將信息同時(shí)發(fā)送給一臺打印機(jī)。為解決這個(gè)問題,對那些可共享的資源來說(比如打印機(jī)),它們在使用期間必須進(jìn)入鎖定狀態(tài)。所以一個(gè)線程可將資源鎖定,在完成了它的任務(wù)后,再解開(釋放)這個(gè)鎖,使其他線程可以接著使用同樣的資源。多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為

12、了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。1.4.3線程優(yōu)先級線程優(yōu)先級被線程調(diào)度用來判定何時(shí) 哪個(gè)線程允許運(yùn)行 。理論上,優(yōu)先級高的線程比優(yōu)先級低的線程獲得更多的cpu時(shí)間。實(shí)際上,線程獲得的cpu 時(shí)間通常由包括優(yōu)先級在內(nèi)的多個(gè)因素決定(例如,一個(gè)實(shí)行多任務(wù)處理的操作系統(tǒng)如何更有效的利用cpu時(shí)間) 。一個(gè)優(yōu)先級高的線程自然比優(yōu)先級低的線程優(yōu)先。舉例來說,當(dāng)?shù)蛢?yōu)先級線程正在運(yùn)行,而一個(gè)高優(yōu)先級的線程被恢復(fù)(例如從沉睡中或等待i/o中),它將搶占低優(yōu)先級線程所使用的cpu。理論上,等優(yōu)先級線程有同等的權(quán)利使用cpu。但你必須小心了。記住, java是被

13、設(shè)計(jì)成能在很多環(huán)境下工作的。一些環(huán)境下實(shí)現(xiàn)多任務(wù)處理從本質(zhì)上與其他環(huán)境不同。為安全起見,等優(yōu)先級線程偶爾也受控制。這保證了所有線程在無優(yōu)先級的操作系統(tǒng)下都有機(jī)會運(yùn)行。實(shí)際上,在無優(yōu)先級的環(huán)境下,多數(shù)線程仍然有機(jī)會運(yùn)行,因?yàn)楹芏嗑€程不可避免的會遭遇阻塞,例如等待輸入輸出。遇到這種情形,阻塞的線程掛起,其他線程運(yùn)行。但是如果你希望多線程執(zhí)行的順利的話,最好不要采用這種方法。同樣 ,有些類型的任務(wù)是占cpu的。對于這些支配cpu類型的線程,有時(shí)你希望能夠支配它們 ,以便使其他線程可以運(yùn)行。1.4.4線程同步多個(gè)線程同時(shí)讀寫同一份共享資源的時(shí)候,可能會引起沖突。這時(shí)候,我們需要引入線程“同步”機(jī)制,即

14、各位線程之間要有個(gè)先來后到,不能一窩蜂擠上去搶作一團(tuán)。同步的關(guān)鍵是管程,管程是一個(gè)互斥獨(dú)占鎖定的對象,在給定的時(shí)間,僅有一個(gè)線程獲得管程,當(dāng)一個(gè)線程需要鎖定時(shí),他必須進(jìn)入管程。1.5端口掃描一個(gè)端口就是一個(gè)潛在的通信通道,也就是一個(gè)入侵通道。對目標(biāo)計(jì)算機(jī)進(jìn)行端口掃描,能得到許多有用的信息。進(jìn)行掃描的方法很多,可以是手工進(jìn)行掃描,也可以用端口掃描軟件進(jìn)行。在手工進(jìn)行掃描時(shí),需要熟悉各種命令。對命令執(zhí)行后的輸出進(jìn)行分析。用掃描軟件進(jìn)行掃描時(shí),許多掃描器軟件都有分析數(shù)據(jù)的功能。通過端口掃描,可以得到許多有用的信息,從而發(fā)現(xiàn)系統(tǒng)的安全漏洞。2概要設(shè)計(jì)2.1整體框架設(shè)計(jì)經(jīng)過我們組員的思考很研究,得出了以

15、下幾個(gè)模塊的簡單端口掃描器,整個(gè)端口掃描器的核心模塊是是端口掃描系統(tǒng),它由許多子模塊組成,其結(jié)構(gòu)如下圖所示: tcp端口掃描程序基本信息檢測模塊參數(shù)設(shè)計(jì)模塊端口掃描模塊 檢測信息匹配模塊ip地址是否存在確定端口范圍以及線程數(shù)通過scoket來進(jìn)行端口掃描是否在參數(shù)范圍中結(jié)果輸出模塊(通過gui界面輸出得到的結(jié)果)2.2流程圖描述 開始輸入主機(jī)名或要查找的的ip 輸入端口的范圍輸入線程數(shù)匹配過濾原則是否完全匹配建立原始套接字連接讀取應(yīng)答內(nèi)容應(yīng)答數(shù)據(jù)有效 記錄端口序列g(shù)ui界面中打印出來結(jié) 束3詳細(xì)設(shè)計(jì)3.1 端口掃描線程啟動掃描程序主要運(yùn)用socket編程。對于一個(gè)工作齊全的socket,其工作

16、過程包含以下四個(gè)就基本步驟:創(chuàng)建通信雙方的socket鏈接,即分別為服務(wù)器和客戶端創(chuàng)建socket對象,建立socket連接;打開連接到socket的輸入流和輸出流;按照一定的協(xié)議對socket進(jìn)行讀/寫操作;關(guān)閉連接。以下是程序代碼/運(yùn)行 掃描端口public void run()int i;socket thetcpsocket;for(i=min_port+threadnum;imax_port;i+= integer.parseint(threadscan.maxthread.gettext()threadscan.status.settext(掃描狀態(tài):正在掃描 +i+ 端口);tr

17、ythetcpsocket=new socket(hostaddress,i);thetcpsocket.close();threadscan.result.append( +i);switch(i) case 21: threadscan.result.append(ftp); break; case 23: threadscan.result.append(telnet); break; case 25: threadscan.result.append(smtp); break; case 80: threadscan.result.append(http); break; case 1

18、10: threadscan.result.append(pop); break; case 139: threadscan.result.append(netbios); break;threadscan.result.append(,);catch (ioexception e)if (i=max_port)threadscan.result.append(n+掃描完成.);threadscan.status.settext(掃描狀態(tài):完成!);3.2 gui圖形界面圖形用戶界面是軟件產(chǎn)品和用戶交互的接口,是軟件產(chǎn)品中用戶直接可以看到并直接操作的部分。public class thread

19、scanpublic static jframe 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 jtextfield(1000,4);public static j

20、textfield maxthread=new jtextfield(100,3);public static jdialog dlgerror=new jdialog(main,錯(cuò)誤!);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.setlocation(300,300);main.setresizable(false);dlgerror

21、.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 label(線程數(shù):);label rst=new label(掃描結(jié)果: );label con=new label( );result.setlinewrap(true);result.seteditable(false);jbutton ok = new j

22、button(確定);jbutton submit = new jbutton(確定);jbutton cancel = new jbutton(取消);container mpanel = main.getcontentpane();container dpanel = dlgerror.getcontentpane();mpanel.setlayout(new flowlayout(flowlayout.left);dpanel.setlayout(new flowlayout(flowlayout.center);mpanel.add(h);mpanel.add(hostname);mp

23、anel.add(p1);mpanel.add(minport);mpanel.add(p2);mpanel.add(maxport);mpanel.add(tnum);mpanel.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

24、 submitaction();cancel.addactionlistener(new cancleaction();ok.addactionlistener(new okaction();3.3 按鈕監(jiān)聽及異常處理本部分主要對各個(gè)按鈕進(jìn)行監(jiān)聽。是整個(gè)程序的時(shí)間驅(qū)動設(shè)計(jì)部分。并且顯示運(yùn)行結(jié)果。class submitaction implements actionlistenerpublic void actionperformed (actionevent a)int minport;int maxport;int maxthread;tryminport=integer.parseint

25、(threadscan.minport.gettext();maxport=integer.parseint(threadscan.maxport.gettext();maxthread=integer.parseint(threadscan.maxthread.gettext();catch(numberformatexception e)threadscan.dlginfo.settext(錯(cuò)誤的端口號或線程數(shù)!端口號和線程數(shù)必須為整數(shù)!);threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);re

26、turn;try tcpthread.hostaddress=inetaddress.getbyname(threadscan.hostname.gettext();catch(unknownhostexception e)threadscan.dlginfo.settext( 錯(cuò)誤的ip地址/域名或地址不可達(dá)! );threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;if(minport65535 | minportmaxport) threadscan.dlginfo.settext

27、(最小端口必須是0-65535并且小于最大端口的整數(shù)!);threadscan.dlgerror.setvisible(true);return;else tcpthread.min_port=minport;if(maxport65535 | maxportminport)threadscan.dlginfo.settext(最大端口必須是0-65535并且大于最小端口的整數(shù)!);threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;else tcpthread.max_port=max

28、port;if(maxthread200)threadscan.dlginfo.settext( 線程數(shù)為1-200的整數(shù)! );threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;threadscan.result.settext();threadscan.result.append(正在掃描 +threadscan.hostname.gettext()+ 線程數(shù) +threadscan.maxthread.gettext()+n);threadscan.result.append(開

29、放端口: );for(int i=0;imaxthread;i+)new tcpthread(t + i,i).start();4調(diào)試與操作說明4.1運(yùn)行界面對本機(jī)進(jìn)行多線程的端口掃描,即在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錯(cuò)誤提示程序中往往由于一些數(shù)

30、據(jù)不正確會造成運(yùn)行后錯(cuò)誤,所以在程序中添加了異常處理機(jī)制,其中遇到的錯(cuò)誤可能有以下幾種:當(dāng)端口號或線程數(shù)不是整數(shù)時(shí)會出現(xiàn)如下錯(cuò)誤:當(dāng)ip地址或域名錯(cuò)誤時(shí),會出現(xiàn)如下錯(cuò)誤:當(dāng)最小端口數(shù)不在065535且不小于最大端口數(shù)時(shí)會出現(xiàn)如下錯(cuò)誤:當(dāng)最大端口數(shù)不在065535且不大于最小端口數(shù)時(shí)會出現(xiàn)如下錯(cuò)誤:當(dāng)線程數(shù)范圍不在0200時(shí)會出現(xiàn)如下錯(cuò)誤:5課程設(shè)計(jì)總結(jié)與體會本組成員共同設(shè)計(jì)的基于多線程的端口掃描程序基本滿足了課程設(shè)計(jì)的要求,能夠很好地對本機(jī)或其他電腦端口進(jìn)行掃描,同時(shí)也處理了程序中可能出現(xiàn)的錯(cuò)誤。本次課程設(shè)計(jì),使我們對計(jì)算機(jī)網(wǎng)絡(luò)這門課程有了更深入的理解。計(jì)算機(jī)網(wǎng)絡(luò)是一門實(shí)踐性較強(qiáng)的課程,為了學(xué)

31、好這門課程,必須在掌握理論知識的同時(shí),加強(qiáng)上機(jī)實(shí)踐。要想把課程設(shè)計(jì)做的更好,就要學(xué)會參考一定的資料,吸取別人的經(jīng)驗(yàn),加強(qiáng)團(tuán)隊(duì)合作。在本課程設(shè)計(jì)中,我們明白了理論與實(shí)際應(yīng)用相結(jié)合的重要性,并提高了自己組織數(shù)據(jù)及編寫大程序的能力。培養(yǎng)了基本的、良好的程序設(shè)計(jì)技能以及合作能力。這次課程設(shè)計(jì)同樣提高了我們的綜合運(yùn)用所學(xué)知識的能力。課程設(shè)計(jì)程序的編寫需要有耐心,有些事情看起來很復(fù)雜,但問題需要一點(diǎn)一點(diǎn)去解決,分析問題,把問題模塊化,劃分成小塊以后就逐個(gè)去解決。再總體解決大的問題。這樣做起來不僅有條理也使問題得到了輕松的解決。通過這段時(shí)間的課程設(shè)計(jì),我們認(rèn)識到計(jì)算機(jī)網(wǎng)絡(luò)是一門比較難的課程。需要多花時(shí)間學(xué)習(xí)

32、。這次的課程設(shè)計(jì)培養(yǎng)了我們實(shí)際分析問題、編程和動手能力,使我們掌握了計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)的基本技能,提高了我們適應(yīng)實(shí)際,運(yùn)用于實(shí)際生活的能力。這次的課程設(shè)計(jì)提高了我們對于專業(yè)課的學(xué)習(xí)熱情,使我們能夠更加深入的理解課本內(nèi)容,對計(jì)算機(jī)網(wǎng)絡(luò)也有了進(jìn)一步的理解和認(rèn)識,同時(shí)也理解了將課本內(nèi)容與實(shí)際生活相結(jié)合的好處。6參考文獻(xiàn)1 趙生慧.java面向?qū)ο蟪绦蛟O(shè)計(jì).北京:中國水利水電出版社,2010。2 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第五版).北京:電子工業(yè)出版社,2011。3 吳功宜.計(jì)算機(jī)網(wǎng)絡(luò)(第二版).北京:清華大學(xué)出版社,2007。4 楊靜宇. java程序設(shè)計(jì)與應(yīng)用開發(fā)(第2版) m. 北京: 清華大學(xué)出版社

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

34、 java.awt.event.*;import javax.swing.*;class tcpthread extends threadpublic static inetaddress 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 thetc

35、psocket;for (i = min_port+threadnum; i max_port; i += integer.parseint(threadscan.maxthread.gettext()threadscan.status.settext(掃描狀態(tài):正在掃描 +i+ 端口);trythetcpsocket=new socket(hostaddress,i);thetcpsocket.close();threadscan.result.append( +i);switch(i)case 21:threadscan.result.append(ftp);break;case 23:t

36、hreadscan.result.append(telnet);break;case 25:threadscan.result.append(smtp);break;case 80:threadscan.result.append(http);break;case 110:threadscan.result.append(pop);break;case 139:threadscan.result.append(netbios);break;threadscan.result.append(,);catch (ioexception e)if (i=max_port)threadscan.res

37、ult.append(n+掃描完成.);threadscan.status.settext(掃描狀態(tài):完成!);class cancleaction implements actionlistenerpublic void actionperformed (actionevent e)system.exit(1);class submitaction implements actionlistenerpublic void actionperformed (actionevent a)int minport;int maxport;int maxthread;tryminport=intege

38、r.parseint(threadscan.minport.gettext();maxport=integer.parseint(threadscan.maxport.gettext();maxthread=integer.parseint(threadscan.maxthread.gettext();catch(numberformatexception e)threadscan.dlginfo.settext(錯(cuò)誤的端口號或線程數(shù)!端口號和線程數(shù)必須為整數(shù)!);threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描

39、狀態(tài):未開始);return;trytcpthread.hostaddress=inetaddress.getbyname(threadscan.hostname.gettext();catch(unknownhostexception e)threadscan.dlginfo.settext( 錯(cuò)誤的ip地址/域名或地址不可達(dá)! );threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;if(minport65535 | minportmaxport)threadscan.dlginfo

40、.settext(最小端口必須是0-65535并且小于最大端口的整數(shù)!);threadscan.dlgerror.setvisible(true);return;else tcpthread.min_port=minport;if(maxport65535 | maxportminport)threadscan.dlginfo.settext(最大端口必須是0-65535并且大于最小端口的整數(shù)!);threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;else tcpthread.max_

41、port=maxport;if(maxthread200)threadscan.dlginfo.settext( 線程數(shù)為1-200的整數(shù)! );threadscan.dlgerror.setvisible(true);threadscan.status.settext(掃描狀態(tài):未開始);return;threadscan.result.settext();threadscan.result.append(正在掃描 +threadscan.hostname.gettext()+ 線程數(shù) +threadscan.maxthread.gettext()+n);threadscan.result.

42、append(開放端口: );for(int i=0;imaxthread;i+)new tcpthread(t + i,i).start();class okaction implements actionlistenerpublic void actionperformed (actionevent e)threadscan.dlgerror.dispose();public class threadscanpublic static jframe main=new jframe(基于java的多線程tcp端口掃描程序);public static jtextarea result=new jtextarea(,4,43);public static jtextfield hostname=new jtextfield(localhost,8);public static jtextfield minp

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論