網絡編程課程設計+端口掃描+java實現(xiàn)+源碼吳學之_第1頁
網絡編程課程設計+端口掃描+java實現(xiàn)+源碼吳學之_第2頁
網絡編程課程設計+端口掃描+java實現(xiàn)+源碼吳學之_第3頁
網絡編程課程設計+端口掃描+java實現(xiàn)+源碼吳學之_第4頁
網絡編程課程設計+端口掃描+java實現(xiàn)+源碼吳學之_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

.PAGE.課程設計任務書題目網絡端口掃描軟件的開發(fā)學院<部>信息工程學院專業(yè)網絡工程班級網絡學生姓名吳學之學號201124076月30日至7月4日共1周指導教師<簽字>系主任<簽字>2014年6月30日目錄TOC\o"1-2"\h\u14521設計任務與要求3276202系統(tǒng)功能描述377942.1功能概述366842.2本系統(tǒng)要實現(xiàn)的功能3256803系統(tǒng)總體設計3103773.1總體分析392343.2界面設置構思圖417433.3界面使用設置構思453133.4后臺設計構思5260814系統(tǒng)詳細設計6269584.1界面設計69094.2界面設計圖6277534.3后臺設計6234165實現(xiàn)與測試10245925.1運行要求與環(huán)境10125245.2運行程序流程圖11262715.3運行界面12164206設計總結1810603參考文獻196912附件201設計任務與要求加深對《Java面向對象程序設計》課程所學知識的理解,進一步鞏固Java語言的語法規(guī)則。分析系統(tǒng)的可行性,讓系統(tǒng)有一個明確的方向,使開發(fā)更具合理性,并能分析出系統(tǒng)的具體流程,為后面的開發(fā)做好鋪墊。明確本次課程設計所要用到的技術點并到網上搜索以及查閱相關的書籍來搜集資料。通過編寫一個基于Java的應用系統(tǒng)綜合實例,來掌握Java語言編程技巧。并學會編制結構清晰、風格良好的Java語言程序,從而具備解決綜合性實際問題的能力,學會使用Java編程工具,如EditPlus,Eclipse等。2系統(tǒng)功能描述2.1功能概述多線程端口掃描器是實現(xiàn)計算機的端口的掃描,只要在在前臺設置好所要掃描的IP、起始端口、結束端口以及所要用到的線程數,點擊掃描,就可以掃描到所輸入IP地址主機的開放端口,并顯示在主窗體中;點擊退出,則可以退出該程序。IP設置應為所在主機的IP地址,起始端口和結束端口應為0~65535之間的一個數,且起始端口應小于結束端口的大小。線程數為0~200之間的一個數。點擊開始后就會運行,直到掃描完畢顯示出開放端口,如果沒有開放端口,則只顯示掃描完畢。2.2本系統(tǒng)要實現(xiàn)的功能①端口掃描功能:掃描開放的端口,并將掃描到的開放端口號送到前臺。②圖像顯示功能:顯示界面圖形。③多線程功能:當客戶端要求與服務器端建立連接時,服務器端就將用到多線程功能,為每一個建立起來的連接創(chuàng)建一個線程。④異常拋出功能:對于明顯的錯誤,能提示出錯誤的類型并結束程序的運行。3系統(tǒng)總體設計3.1總體分析本程序分為前后臺系統(tǒng),后臺系統(tǒng)用于掃描主機開放端口,并把節(jié)掃描的數據送至前臺窗口顯示;前臺要顯示掃描的結果,所以應為一個窗口,這個窗口應能夠設置主機的IP地址,設置端口的開始端口、結束端口和線程數,并且還能夠顯示掃描的狀態(tài)。在中央是顯示結果的窗體。本程序還應能夠有控制掃描的狀態(tài)命令,附加設置最小化和關閉按鈕。3.2界面設置構思圖3.3界面使用設置構思當出現(xiàn)如圖所示的界面時,填寫好要掃描的IP地址,需要掃描的端口范圍和線程數,單擊命令提示按鈕就可以開始掃描,掃描結果就會顯示在中間的掃描結果顯示區(qū)域,在掃描狀態(tài)顯示區(qū)就會顯示是否掃描完畢。流程圖如下:界面出現(xiàn)界面出現(xiàn)填寫IP地址或者用默認的IP設置掃描需要的線程數或者是用默認的線程數單擊命令按鈕開始掃描掃描結束,顯示結果顯示在結果顯示區(qū)域是否繼續(xù)退出結束否是圖2系統(tǒng)構思流程圖3.4后臺設計構思后臺系統(tǒng)使用Scanner和Scan類,創(chuàng)建前臺布局和創(chuàng)建掃描端口、事件處理,并且能對簡單的錯誤進行判斷,顯示錯誤原因。調用數據處理包,處理異常情況;調用皮膚包,美化顯示窗口。4系統(tǒng)詳細設計4.1界面設計本程序界面圖形設計要能清楚顯示掃描后的結果,并且能很好的體現(xiàn)出界面的整潔大方,但并不失去吸引人眼球的畫面,所以在做界面的時候考慮了界面的色彩,并且添加了皮膚,界面上面的字體設置和windows窗口設置一樣采用宋體,界面上的按鈕不設置過多的按鈕,僅設置有必要的按鈕即可,界面設置大方。使用的時候有默認的IP地址、需要掃描的端口和線程數,如果需要掃描其他主機,只需要填寫好要掃描的主機的IP地址,需要掃描的端口范圍和線程數,單擊命令提示按鈕就可以開始掃描,掃描結果就會顯示在中間的掃描結果顯示區(qū)域,在掃描狀態(tài)顯示區(qū)就會顯示是否掃描完畢。4.2界面設計圖本程序采用小窗口形式,外圍大小為170mm*90mm,字體采用宋體五號,結果顯示區(qū)域框架大小為160mm*45mm,結果顯示字幕為主機地址加開放端口。添加個性皮膚。其余地方設置按鈕和掃描的主機地址、端口和線程數。設計的預計頁面圖形如圖:顯示紅色添加個性皮膚顯示紅色添加個性皮膚4.3后臺設計本程序使用了為主要的Scanner類和Scan類。Scan類的作用是創(chuàng)建線程掃描端口,然后把結果顯示到前臺。Scanner類的作用是構造前臺布局,調用Scan類添加事件處理,對輸入進行錯誤判斷,如果輸入不在允許的范圍之內則顯示相關錯誤。在本程序中用到了網絡編程的兩個類,下面介紹這兩個類的常用方法。InetSocketAddress類構造方法如下:InetSocketAddress<InetAddressaddr,intport>:根據IP地址和端口號創(chuàng)建套接字地址。InetSocketAddress<intport>:創(chuàng)建套接字地址,其中IP地址為通配符地址,端口號為指定值。InetSocketAddress<Stringhostname,intport>:根據主機名和端口號創(chuàng)建套接字地址。Socket類常用方法如下:Socket<>:通過系統(tǒng)默認類型的SocketImpl創(chuàng)建未連接套接字Socket<InetAddressaddress,intport>:創(chuàng)建一個流套接字并將其連接到指定IP地址的指定端口號。voidbind<SocketAddressbindpoint>:將套接字綁定到本地地址。voidclose<>:關閉此套接字。voidconnect<SocketAddressendpoint>:將此套接字連接到服務器。voidconnect<SocketAddressendpoint,inttimeout>:將此套接字連接到具有指定超時值的服務器。booleanisClosed<>:返回套接字的關閉狀態(tài)。booleanisConnected<>:返回套接字的連接狀態(tài)。本程序還調用其他的一些類和包,比如軟件包java.awt.color、、io.IOException、Javax.Swing、jvnet.substance.*。包的的描述:提供用于顏色空間的類。它包含了基于國際色彩聯(lián)盟<ICC>配置文件格式規(guī)范的顏色空間實現(xiàn)。它還包含了基于ICC配置文件格式規(guī)范的顏色配置文件。用來使界面更加具有色彩。Result.setBackground<Color.PINK>;//設置窗口為粉紅java.awt.event的描述:提供處理由AWT組件所激發(fā)的各類事件的接口和類。事件由事件源所激發(fā),向事件源注冊的事件偵聽器可接收有關特定事件類型的通知。此包定義了事件和事件偵聽器,以及事件偵聽器適配器,它是讓事件偵聽器的編寫過程更為輕松的便捷類。在本程序中使用:publicvoidactionPerformed<ActionEvente>{ Stringcmd=e.getActionCommand<>; if<cmd.equals<"Start">>…………}io.IOException包的描述:用來處理io的錯誤,不僅僅是文件讀寫,還包括很多stream的讀寫,而且throws是用來放在函數定義的函數體前函數名后的,表示這個函數將會在出現(xiàn)異常的書后會拋出io異常,所以在以后的程序中調用這個函數的時候就必須用try和catch來捕獲異常,否則編譯會報錯,這主要涉及到java的安全機制。本程序中使用如下:try{ minPort=Integer.parseInt<PortStart.getText<>>; maxPort=Integer.parseInt<PortEnd.getText<>>; threadNum=Integer.parseInt<ThreadNum.getText<>>; }catch<NumberFormatExceptione1>{ DLGError.setBounds<300,280,299,120>; DLGINFO.setText<"錯誤的端口號或線程數!端口號和線程數必須為整數!">; DLGINFO.setBounds<10,20,280,20>; OK.setBounds<110,50,60,30>;DLGError.setVisible<true>; return;…………}Javax.Swing集合描述:由所有Java圖形用戶界面〔GUI組件所構成,可運行在任一支持Java虛擬機〔JVM的本地平臺上。由于這些組件全都是用Java語言編寫的,因此它們可以提供比本地平臺GUI組件更多的功能?!才c抽象窗口工具箱對比。JavaSwing是JavaFoundationClasses〔JFC的一部分。在Swing中,Sun開發(fā)了一個經過仔細設計的、靈活而強大的GUI工具包。Swing是在AWT組件基礎上構建的。它所提供的功能要比AWT提供的更為廣泛。它也是Java技術的一種標準配置。Swing模型一個JavaGUI通常由頂層容器、中間容器以及多個原子組件組成。每個原子組件或容器都可能觸發(fā)相應事件的產生。容器是一類能夠在其中容納其他組件的特殊組件。Swing的GUI組件類是按照類屬層次以樹狀結構進行組織的。在這個樹的最頂層,即樹的根部,使一個最基本的容器類,被稱為頂層容器。Swing提供了三個通用的頂層容器類JFrame,JDialog和JApplet。JFrame提供了基于窗體的應用程序,JDialog提供對話框形式的界面,JApplet提供Java小應用程序的界面形式。在頂層容器下是中間容器,用于容納其他的組件。通常窗格本身在顯示界面中是看不到的。面板類Panel是一種中間容器,它的唯一作用是使組件更容易定位。頂層容器通過getContentPane<>方法獲取內部的一個內容窗格。Swing包的組成:javax.swing:基本Swing包,包括Swing容器、組件及相關設置的類和接口。javax.swing.border:包括與邊界設計相關的類和接口。javax.swing.colorchooser:與顏色選擇相關的類和接口。javax.swing.event:包括事件處理相關的類和接口。javax.swing.filechooser:包括對文件進行查看選取的相關類。javax.swing.plaf:包括一些對外觀樣式操作的類和接口。javax.swing.tree:包括對樹形組件進行操作的類和接口。常用Swing組件:按鈕:utton文本區(qū):JTextArea文本字段:JTextField在本程序中使用如下://設置主窗體位置和大小 mainFrame.setBounds<180,200,550,300>; mainFrame.addWindowListener<newWindowAdapter<>{ publicvoidwindowClosing<WindowEvente>{ System.exit<0>;//設置掃描按鈕和退出按鈕 Start.setBounds<405,232,60,30>; Start.setActionCommand<"Start">; Start.addActionListener<this>; Exit.setBounds<475,232,60,30>; Exit.setActionCommand<"Exit">; Exit.addActionListener<this>;jvnet.substance.*:目的是提供一個流行的外觀〔look&feel。//設置窗體皮膚SubstanceAutumnLookAndFeel.setSkin<newFieldOfWheatSkin<>>;5實現(xiàn)與測試5.1運行要求與環(huán)境〔1性能要求實時性好、可靠性強、不占用系統(tǒng)太多的內存和存儲空間?!?設計約束開發(fā)工具:Eclipse運行環(huán)境:Windows2000以上能實現(xiàn)用戶所定義的各項需求。5.2運行程序流程圖在Eclipse中右擊,選擇運行方式,JAVA應用程序在Eclipse中右擊,選擇運行方式,JAVA應用程序填寫IP地址,可填寫任意的一個IP出現(xiàn)程序界面設置開始端口大小,設置0~65535之間的端口號且必須為整數設置結束口,設置0~65535之間的端口號且必須為整數,并且大于開始端口設置進程數,0~200之間且必須為整數點擊掃描可以開始掃描結果顯示是否繼續(xù)掃描結束程序否,點擊退出是,重新設置圖4流程圖5.3運行界面圖5運行界面圖未掃描狀態(tài)圖6運行界面未掃描狀態(tài)圖正常掃描后狀態(tài)圖7運行界面正常掃描狀態(tài)圖起始端口設置有誤掃描開始后狀態(tài)報錯掃描結果保存線程數設置錯誤報錯端口掃描完成6設計總結在此次課程設計中,遇到了一些問題,如:程序功能不能完全實現(xiàn),對于面向對象的方法了解不夠透徹,運用到實際的軟件開發(fā)中存在著困難;對于Java語言,以前只學習到了一些最基本的知識,要在短時間內用Java語言來開發(fā)軟件是一個較大的挑戰(zhàn);對于開發(fā)軟件的流程不熟悉,適應起來比較慢,編寫需求說明書和設計規(guī)格說明書時,自己感覺難以動手,這表明所學的知識不能靈活運用到實際中。對于以上的問題,自己有清楚的認識,解決辦法是需要大量閱讀相關的書籍,多看些項目的源代碼。對于書上以及網站上下載的資料中的Java實例必須理解,還有多跟精通JAVA語言的老師和同學請教和交流,取其精華。對于實際動手能力與軟件開發(fā)的流程的適應,必須多進行實際的練習與操作,才能有所進步。我自己感覺此次課程設計做得挺成功的,通過這一次實踐編程,我學到了不少有關JAVA的實際編程的知識。在這次設計開始的第一天開始,我就開始著手修改一個用JAVA編寫的短線呈端口掃描的程序。我剛開始很自信自己能修改成功,但這一過程太不順利。用了兩天時間來修改那個JAVA程序,但調試的時候都沒有成功。后來我請教一個班上成績好的同學,在他的幫助下我不斷的發(fā)現(xiàn)錯誤,并改正它們,功夫不負有心人人,我的程序最后運行成功了。在這課程設計期間我的同學和老師幫助了我,有些東西是我們一起探討,一起解決方法的。當然在學習Java和設計程序的過程中還得到了杭志老師的辛勤指導,為我解答了不少的疑問。同時,在老師身上我們學到了很多實用的東西,在此表示衷心的感謝!同時,還要感謝幫助過我的其他同學!這次課程設計令我感受很多。從拿到題目到改編JAVA程序;然后請教別人慢慢研究琢磨;從理論到實踐;從失敗到成功;忘不了我坐在電腦前苦苦思索,高溫下熬夜地編程的疲憊;忘不了因沉迷于編程卻耽誤了吃飯時間而挨餓辛酸;忘不了……這其中了不少的東西,磨礪了我的意志;同時還鞏固了以前所學的知識,學到了不少書本上沒有的知識;學到了很多java編程知識,并學會了簡單的使用eclipse來開發(fā)java程序的一些使用技巧這次課程設計是對我本學期所學的知識的檢驗,由此我發(fā)現(xiàn)了不少的問題??梢哉f它給了我一次自我評估的機會。通過設計讓我知道了那些方面我還是有欠缺的,促使我花時間彌補。臨近考試,時間太緊迫,致使程序實現(xiàn)的功能在方法上也許不是很完美,但我以后會多向老師請教,自己也要加強對Java的學習。努力進一步提高自己的編程水平。此次的課程設計,對我來說撰寫文檔似乎是一個更大的挑戰(zhàn)。撰寫文檔不僅要求我們要對自己程序非常熟悉:程序的總體框架,功能,如何實現(xiàn),存在什么問題等,同時還要求我們有清晰的思維和準確的表達能力以及嚴密的邏輯性。因此,寫完這篇文檔對于我們自身來說自然是獲益匪淺的。參考文獻[1]SharonZakhourScottHommel等著.Java語言導學.人民郵電出版社,2008[2]耿祥義編著.Java基礎教程.清華大學出版社,2004[3]JoeWigglesworthPaulaLumby.Java程序設計高級主題.北京大學出版社,2004[4]Y.DanielLiang著,王鎂等譯.Java語言程序設計基礎篇.2006[5]朱福喜等.Java項目設計與開發(fā)范例.電子工業(yè)出版社,2005附件/*基于多線程端口掃描程序源代碼*/packagescanner;/*基于多線程端口掃描程序源代碼*/importjava.awt.BorderLayout;importjava.awt.Color;//類的調用importjava.awt.Container;importjava.awt.Dimension;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.Label;importjava.awt.TextArea;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;nt;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.FileWriter;importjava.io.IOException;importjava.io.InputStream;importjavax.swing.ImageIcon;importjavax.swing.utton;importjavax.swing.JDialog;importjavax.swing.JFileChooser;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JTextField;publicclassScannerextendsJFrameimplementsActionListener{ publicstaticvoidmain<String[]args>{ newScanner<>;// newFrame1<>;// Frame.repaint<>; } //創(chuàng)建主窗口 staticintj=0; //Imageimg=Toolkit.getDefaultToolkit<>.getImage<"images/123.jpg">;JLabelphoto1=newJLabel<newImageIcon<"images11/2.gif">>;JLabelphoto2=newJLabel<newImageIcon<"images11/1.gif">>; publicstaticJFrameFrame=newJFrame<>; publicstaticLabellabelIP=newLabel<"主機IP">; publicstaticLabellabelPortStart=newLabel<"起始端口:">; publicstaticLabellabelPortEnd=newLabel<"結束端口:">; publicstaticLabellabelThread=newLabel<"線程數:">; publicstaticLabellabelResult1=newLabel<"掃描結果:">; publicstaticLabelState=newLabel<"掃描狀態(tài):">; publicstaticLabelScanning=newLabel<"掃描待命">; publicstaticLabelTimeout=newLabel<"請求超時:">; publicstaticJTextFieldhostName=newJTextField<"">; publicstaticJTextFieldPortStart=newJTextField<"130">; publicstaticJTextFieldPortEnd=newJTextField<"140">; publicstaticJTextFieldThreadNum=newJTextField<"5">; publicstaticJTextFieldtime=newJTextField<"2000">; //文本區(qū)域,顯示掃描結果 publicstaticTextAreaResult1=newTextArea<>; publicstaticTextAreaResult2=newTextArea<>; publicstaticLabelDLGINFO=newLabel<"">; publicstaticuttonStart=newutton<"開始掃描">; publicstaticuttonExit=newutton<"掃描退出">; publicstaticuttonsave=newutton<"保存">; //錯誤提示對話框 publicstaticJDialogDLGError=newJDialog<Frame,"ERROR">; publicstaticuttonOK=newutton<"OK">; publicScanner<>{ //設置窗體皮膚 //SubstanceAutumnLookAndFeel.setSkin<newFieldOfWheatSkin<>>; //設置主窗體名稱 Frame.setTitle<"網絡編程課程設計:網絡端口掃描軟件的開發(fā)">; //設置主窗體位置和大小 //Frame.setSize<560,510>; Frame.setSize<560,510>; Frame.addWindowListener<newWindowAdapter<>{ publicvoidwindowClosing<WindowEvente>{ System.exit<0>; } }>; //設置掃描按鈕和退出按鈕 Start.setBounds<160,232,90,30>; Start.setActionCommand<"Start">; Start.addActionListener<this>; Exit.setBounds<455,445,90,30>; Exit.setActionCommand<"Exit">; Exit.addActionListener<this>; save.setBounds<5,445,90,30>; save.setActionCommand<"save">; save.addActionListener<this>; labelIP.setBounds<17,13,50,20>; Timeout.setBounds<290,45,55,20>; hostName.setBounds<67,10,92,25>; hostName.setHorizontalAlignment<JTextField.CENTER>; labelPortStart.setBounds<162,13,60,20>; PortStart.setBounds<227,10,45,25>; PortStart.setHorizontalAlignment<JTextField.CENTER>; labelPortEnd.setBounds<292,13,60,20>; PortEnd.setBounds<357,10,45,25>; PortEnd.setHorizontalAlignment<JTextField.CENTER>; labelThread.setBounds<422,13,50,20>; ThreadNum.setBounds<477,10,45,25>; time.setBounds<350,44,55,20>; ThreadNum.setHorizontalAlignment<JTextField.CENTER>; labelResult1.setBounds<1,232,60,30>; Result1.setBounds<1,65,270,160>; //photo.setBounds<230,75,320,220>; photo1.setBounds<230,65,350,220>; photo2.setBounds<500,510,550,220>; Result1.setEditable<false>; Result1.setBackground<Color.RED>; Result2.setBounds<1,280,542,160>; Result2.setEditable<false>; Result2.setBackground<Color.GREEN>; State.setBounds<1,45,55,20>; Scanning.setBounds<60,40,120,30>; //設置錯誤提示框 ContainerdisplayPanel=DLGError.getContentPane<>; displayPanel.setLayout<null>; displayPanel.add<DLGINFO>; displayPanel.add<OK>; OK.setActionCommand<"OK">; OK.addActionListener<this>; //在主窗體中添加其他組件 Frame.setLayout<null>; Frame.setResizable<false>; Frame.add<Start>; Frame.add<Timeout>; Frame.add<time>; Frame.add<Exit>; Frame.add<save>; Frame.add<labelIP>; Frame.add<hostName>; Frame.add<labelPortStart>; Frame.add<labelPortEnd>; Frame.add<PortStart>; Frame.add<PortEnd>; Frame.add<labelThread>; Frame.add<ThreadNum>; Frame.add<labelResult1>; Frame.add<Result1>; Frame.add<Result2>; Frame.add<State>; Frame.add<Scanning>; Frame.add<photo1>; Frame.add<photo2>; Frame.setResizable<false>; Frame.setVisible<true>; } //錯誤產生的幾個原因 publicvoidactionPerformed<ActionEvente>{ Stringcmd=e.getActionCommand<>; if<cmd.equals<"save">>{// Stringstr=Result2.getText<>; try{ BufferedWriterbw=newBufferedWriter<newFileWriter<"C:\\Users\\loveinparadise\\Desktop\\"+"掃描結果"+j+".txt">>; bw.write<Scan.str>; Scan.str="";// bw.write<"\r\n">; bw.newLine<>; bw.close<>; }catch<IOExceptione1>{ //TODOAuto-generatedcatchblock e1.printStackTrace<>; } } if<cmd.equals<"Start">>{ Result1.setText<null>; Result2.setText<null>; j++; try{ Scan.hostAddress=InetAddress.getByName<Scanner.hostName .getText<>>; Scan.time=Integer.parseInt<Scanner.time .getText<>>; } catch<UnknownHostExceptione1>{ DLGError.setBounds<300,280,160,110>; DLGINFO.setText<"主人,這是錯誤的IP地址or域名">; DLGINFO.setBounds<25,15,100,20>; OK.setBounds<45,40,60,30>; DLGError.setVisible<true>; return; } intminPort; intmaxPort; intthreadNum; try{ //獲取輸入數據 minPort=Integer.parseInt<PortStart.getText<>>; maxPort=Integer.parseInt<PortEnd.getText<>>; threadNum=Integer.parseInt<ThreadNum.getText<>>; }catch<NumberFormatExceptione1>{ DLGError.setBounds<300,280,299,120>; DLGINFO.setText<"主人,錯誤的端口號或線程數,端口號和線程數須為整數!">; DLGINFO.setBounds<10,20,280,20>; OK.setBounds<110,50,60,30>; DLGError.setVisible<true>; return; } //輸入信息錯誤處理 if<<minPort<0>||<maxPort>65535>||<minPort>maxPort>>{ DLGError.setBounds<300,280,295,120>; DLGINFO.setText<"最小端口必須是0-65535并且小于最大端口的整數">; DLGINFO.setBounds<10,20,280,20>; OK.setBounds<120,50,60,30>; DLGError.setVisible<true>; return; } if<<threadNum>200>||<threadNum<0>>{ DLGError.setBounds<300,280,184,120>; DLGINFO.setText<"進程數必須是1-200中的整數">; DLGINFO.setBounds<10,20,200,20>; OK.setBounds<55,50,60,30>; DLGError.setVisible<true>; return; } Result1.append<"正在掃描"+hostName.getText<>+"線程數:"+threadNum +"\n">; Scanning.setText<"開始掃描">; Result1.append<"開始端口"+minPort+"結束端口"+maxPort+"\n">; //多線程算法核心代碼 for<inti=minPort;i<=maxPort;>{ if<<i+threadNum><=maxPort>{ newScan<i,i+threadNum>.run<>;//類Scan引用run<>方法 i+=threadNum; }else{ newScan<i,maxPort>.run<>;

溫馨提示

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

評論

0/150

提交評論