ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:866.97KB ,
资源ID:30275908      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30275908.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多线程端口扫描程序设计与实现.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多线程端口扫描程序设计与实现.docx

1、多线程端口扫描程序设计与实现计算机网络课程设计报告题 目 多线程端口扫描程序设计与实现 第一章 需求分析 11.1设计任务与要求 11.2 系统功能描述 11.2.1功能概述 11.2.2本系统要实现的功能 1第二章 总体设计 12.1总体分析 12.1界面设置构思图 12.3界面使用设置构思 12.4后台设计构思 1第三章 详细设计 13.1界面设计 13.2界面设计图 13.3后台设计 1第四章 调试分析与运行结果 14.1运行环境与要求 14.2 运行程序流程图 14.3运行界面 1第五章 课程设计总结 1第六章 参考文献 1第七章 附录 1第一章 需求分析1.1设计任务与要求 本设计要

2、求完成一个多线程端口扫描程序的设计与实现,具有易用、美观的界面。功能要求: 能够对本地或远程主机进行端口扫描。能够对制定端口段进行扫描。能够扫描制定IP地址围哪些主机开放了特定端口,如常见的TCP端口FTP(21)等。使用 TCP connect进行端口扫描; 使用 TCP SYN 进行端口扫描; 使用 ICMP echo 扫描实现 IP 扫描; 能把扫描结果记录保存下来。1.2 系统功能描述1.2.1功能概述 多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中

3、;点击退出,则可以退出该程序。IP设置应为所在主机的IP地址,起始端口和结束端口应为065535之间的一个数,且起始端口应小于结束端口的大小。线程数为0200之间的一个数。点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕。1.2.2本系统要实现的功能 端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台。 图像显示功能:显示界面图形。 多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程。 异常抛出功能:对于明显的错误,能提示出错误的类型并结束程序的运行。第2章 总体设计2.1总体分析 本程序分为

4、前后台系统,后台系统用于扫描主机开放端口,并把节扫描的数据送至前台窗口显示;前台要显示扫描的结果,所以应为一个窗口,这个窗口应能够设置主机的IP地址,设置端口的开始端口、结束端口和线程数,并且还能够显示扫描的状态。在中央是显示结果的窗体。本程序还应能够有控制扫描的状态命令,附加设置最小化和关闭按钮。2.1界面设置构思图 图1 系统构思图2.3界面使用设置构思当出现如图所示的界面时,填写好要扫描的IP地址,需要扫描的端口围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕。流程图如下: 图2 系统构思流程图2.4后台设计构思后

5、台系统使用Scanner和Scan类,创建前台布局和创建扫描端口、事件处理,并且能对简单的错误进行判断,显示错误原因。调用数据处理包,处理异常情况;调用皮肤包,美化显示窗口。第3章 详细设计3.1界面设计本程序界面图形设计要能清楚显示扫描后的结果,并且能很好的体现出界面的整洁大方,但并不失去吸引人眼球的画面,所以在做界面的时候考虑了界面的色彩,并且添加了皮肤,界面上面的字体设置和windows窗口设置一样采用宋体,界面上的按钮不设置过多的按钮,仅设置有必要的按钮即可,界面设置大方。使用的时候有默认的IP地址、需要扫描的端口和线程数,如果需要扫描其他主机,只需要填写好要扫描的主机的IP地址,需要

6、扫描的端口围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕。3.2界面设计图本程序采用小窗口形式,外围大小为700mm*700mm,结果显示字幕为主机地址加开放端口。添加个性皮肤。其余地方设置按钮和扫描的主机地址、端口和线程数。设计的预计页面图形如图:图3 系统界面设计图3.3后台设计本程序使用了为主要的Scanner2类和ScanTcpConnect类。ScanTcpConnect类的作用是创建线程扫描端口,然后把结果显示到前台。Scanner2类的作用是构造前台布局,调用ScanTcpConnect类添加事件处理,对

7、输入进行错误判断,如果输入不在允许的围之则显示相关错误。在本程序中用到了网络编程的两个类,下面介绍这两个类的常用方法。InetSocketAddress类构造方法如下:InetSocketAddress(InetAddress addr, int port):根据 IP 地址和端口号创建套接字地址。InetSocketAddress(int port):创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。InetSocketAddress(String hostname, int port):根据主机名和端口号创建套接字地址。Socket类常用方法如下:Socket():通过系统默认

8、类型的 SocketImpl 创建未连接套接字 Socket(InetAddress address, int port):创建一个流套接字并将其连接到指定 IP 地址的指定端口号。void bind(SocketAddress bindpoint):将套接字绑定到本地地址。void close():关闭此套接字。void connect(SocketAddress endpoint):将此套接字连接到服务器。void connect(SocketAddress endpoint, int timeout):将此套接字连接到具有指定超时值的服务器。boolean isClosed():返回套接

9、字的关闭状态。boolean isConnected():返回套接字的连接状态。本程序还调用其他的一些类和包,比如软件包 java.awt.color 、java.awt.event、io.IOException、Javax.Swing、jvnet.substance.*。java.awt.color包的的描述:提供用于颜色空间的类。它包含了基于国际色彩联盟 (ICC) 配置文件格式规的颜色空间实现。它还包含了基于 ICC 配置文件格式规的颜色配置文件。用来使界面更加具有色彩。Result.setBackground(Color.PINK);/设置窗口为粉红java.awt.event 的描述

10、:提供处理由 AWT 组件所激发的各类事件的接口和类。事件由事件源所激发,向事件源注册的事件侦听器可接收有关特定事件类型的通知。此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写过程更为轻松的便捷类。在本程序中使用:public void actionPerformed(ActionEvent e) String cmd = e.getActionCommand(); if(cmd.equals(Start)io.IOException包的描述:用来处理io的错误,不仅仅是文件读写,还包括很多stream的读写,而且throws是用来放在函数定义的函数体前函数名后的,表示

11、这个函数将会在出现异常的书后会抛出io异常,所以在以后的程序中调用这个函数的时候就必须用try和catch来捕获异常,否则编译会报错,这主要涉及到java的安全机制。本程序中使用如下:try minPort = Integer.parseInt(PortStart.getText(); maxPort = Integer.parseInt(PortEnd.getText(); threadNum = Integer.parseInt(ThreadNum.getText(); catch (NumberFormatException e1) DLGError.setBounds(300, 280

12、, 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组件更多的功能。(与抽象窗口工具箱对比)。Java Swing是Java Fou

13、ndation Classes(JFC)的一部分。在Swing中,Sun开发了一个经过仔细设计的、灵活而强大的 GUI 工具包。Swing是在AWT组件基础上构建的。它所提供的功能要比AWT提供的更为广泛。它也是Java技术的一种标准配置。Swing模型一个Java GUI通常由顶层容器、中间容器以及多个原子组件组成。每个原子组件或容器都可能触发相应事件的产生。容器是一类能够在其中容纳其他组件的特殊组件。Swing的GUI组件类是按照类属层次以树状结构进行组织的。在这个树的最顶层,即树的根部,使一个最基本的容器类,被称为顶层容器。Swing 提供了三个通用的顶层容器类JFrame,JDialo

14、g和JApplet。JFrame提供了基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序的界面形式。在顶层容器下是中间容器,用于容纳其他的组件。通常窗格本身在显示界面中是看不到的。面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位。顶层容器通过getContentPane()方法获取部的一个容窗格。Swing包的组成:javax.swing:基本Swing包,包括Swing容器、组件及相关设置的类和接口。javax.swing.border:包括与边界设计相关的类和接口。javax.swing.colorchooser:与颜色选择相关的类和

15、接口。javax.swing.event:包括事件处理相关的类和接口。javax.swing.filechooser:包括对文件进行查看选取的相关类。javax.swing.plaf:包括一些对外观样式操作的类和接口。javax.swing.tree:包括对树形组件进行操作的类和接口。常用Swing组件:按钮:JButton文本区:JTextArea文本字段:JTextField在本程序中使用如下:/ 设置主窗体位置和大小 Frame.setSize(700, 700); /设置主窗体大小 /添加窗口监听,使之可以关闭窗口 Frame.addWindowListener(new WindowA

16、dapter() public void windowClosing(WindowEvent e) System.exit(0); ); / 设置扫描按钮和退出按钮 /Tcp connect扫描按钮 Tcp_connect.setBounds(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.setAc

17、tionCommand(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);/监听按钮的行为 /退出扫描按钮 Exit.setBounds(17,463,140,30); Exit.setActionCommand(Exit); Exit.add

18、ActionListener(this); jvnet.substance.*:目的是提供一个流行的外观(look & feel)。/设置窗体皮肤SubstanceAutumnLookAndFeel.setSkin(new FieldOfWheatSkin();第4章 调试分析与运行结果4.1运行环境与要求(1)性能要求实时性好、可靠性强、不占用系统太多的存和存储空间。(2)设计约束开发工具:jdk1.8.0_102 Eclipse jee 图四 开发工具运行环境:Windows 10能实现用户所定义的各项需求。4.2 运行程序流程图 图4 流程图4.3运行界面未扫描状态: 图6 运行界面未扫

19、描状态图正常扫描后状态:图7 运行界面正常扫描状态图起始端口设置有误扫描开始后状态报错:图8 运行界面起始端口设置错误报错图结束端口设置有误扫描开始后状态报错:图9 运行界面结束端口设置错误报错图线程数设置错误报错:图10 运行界面线程数设置错误报错图正常运行:图11 正常运行图正常运行后且保存扫描结果之前的文件容: 图12 保存扫描结果之前的文件容图正常运行后且保存扫描结果之后的文件容: 图13 保存扫描结果之后的文件容第5章 课程设计总结在此次课程设计中,遇到了一些问题,如:程序功能不能完全实现,对于面向对象的方法了解不够透彻,运用到实际的软件开发中存在着困难;对于Java语言,以前只学习

20、到了一些最基本的知识,要在短时间用Java语言来开发软件是一个较大的挑战;对于开发软件的流程不熟悉,适应起来比较慢,编写需求说明书和设计规格说明书时,自己感觉难以动手,这表明所学的知识不能灵活运用到实际中。对于以上的问题,自己有清楚的认识,解决办法是需要大量阅读相关的书籍,多看些项目的源代码。对于书上以及上下载的资料中的Java实例必须理解,还有多跟精通JAVA语言的老师和同学请教和交流,取其精华。对于实际动手能力与软件开发的流程的适应,必须多进行实际的练习与操作,才能有所进步。我自己感觉此次课程设计做得挺成功的,通过这一次实践编程,我学到了不少有关JAVA的实际编程的知识。在这次设计开始的第

21、一天开始,我就开始着手修改一个用JAVA编写的短线呈端口扫描的程序。我刚开始很自信自己能修改成功,但这一过程太不顺利。用了两天时间来修改那个JAVA程序,但调试的时候都没有成功。后来我请教一个班上成绩好的同学,在他的帮助下我不断的发现错误,并改正它们,功夫不负有心人人,我的程序最后运行成功了。在这课程设计期间我的同学和老师帮助了我,有些东西是我们一起探讨,一起解决方法的。当然在学习Java和设计程序的过程中还得到了杭志老师的辛勤指导,为我解答了不少的疑问。同时,在老师身上我们学到了很多实用的东西,在此表示衷心的感!同时,还要感帮助过我的其他同学!这次课程设计令我感受很多。从拿到题目到改编JAV

22、A程序;然后请教别人慢慢研究琢磨;从理论到实践;从失败到成功;忘不了我坐在电脑前苦苦思索,高温下熬夜地编程的疲惫;忘不了因沉迷于编程却耽误了吃饭时间而挨饿辛酸;忘不了这其中了不少的东西,磨砺了我的意志;同时还巩固了以前所学的知识,学到了不少书本上没有的知识;学到了很多java编程知识,并学会了简单的使用eclipse来开发java程序的一些使用技巧这次课程设计是对我本学期所学的知识的检验,由此我发现了不少的问题。可以说它给了我一次自我评估的机会。通过设计让我知道了那些方面我还是有欠缺的,促使我花时间弥补。临近考试,时间太紧迫,致使程序实现的功能在方法上也许不是很完美,但我以后会多向老师请教,自

23、己也要加强对Java 的学习。努力进一步提高自己的编程水平。此次的课程设计,对我来说撰写文档似乎是一个更大的挑战。撰写文档不仅要求我们要对自己程序非常熟悉:程序的总体框架,功能,如何实现,存在什么问题等,同时还要求我们有清晰的思维和准确的表达能力以及严密的逻辑性。因此,写完这篇文档对于我们自身来说自然是获益匪浅的。第6章 参考文献1、Sharon Zakhour Scott Hommel等著. Java 语言导学.人民邮电, 20082、耿祥义 编著. Java基础教程. 清华大学, 20043、Joe Wigglesworth Paula Lumby. Java程序设计高级主题. 大学, 2

24、0044、Y.Daniel Liang著,王镁等译.Java语言程序设计基础篇.20065、朱福喜等.Java项目设计与开发例.电子工业,20056、瑞民.网络扫描技术揭秘.机械工业,2012第7章 附录带注释的源程序:/多线程端口扫描程序设计与实现带有注释的源程序import java.awt.*; /抽象窗口工具包,图形界面组件类import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.Win

25、dowEvent;import java.io.*; /各种IOimport javax.swing.*; /awt基础上的一套图形界面系统import .*;/第一大类:Scanner2类public class Scanner2 extends JFrame implements ActionListener public static void main(String args) /程序入口 new Scanner2(); static int j = 0; /主窗口的创建,new组件 public static JFrame Frame = new JFrame(); public s

26、tatic Label labelIPStart = new Label(起始IP); public static Label labelIPEnd = new Label(结束IP); public static Label labelPortStart = new Label(起始端口); public static Label labelPortEnd = new Label(结束端口); public static Label labelThread = new Label(线程数); public static Label labelTimeOut = new Label(请求超时:

27、); public static Label labelState = new Label(扫描状态:); public static Label labelResult = new Label(扫描结果:); public static Label labelScanning = new Label(扫描待命); JLabel photo= new JLabel(new ImageIcon(G:/图片/QQ图片038.jpg); public static JTextField hostNameStart = new JTextField(127.0.0.1); public static

28、JTextField hostNameEnd = new JTextField(127.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 TextArea Res

29、ult1 = 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_echo = new JButton(ICMP echo 扫描); pu

30、blic 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); /在构造函数里进行窗口设计 public Scanner2() /设置主窗体标题 Frame.setTitle(计算机网络课设:多线程端口扫描 -信安1401 毅 CSU); Frame.setSize(700, 700); /设置主窗体大小 /添加窗口监听,使之可以关闭窗口 Frame.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1