文档详情

多线程端口扫描器Java课程设计报告源代码.doc

桔****
实名认证
店铺
DOC
563KB
约23页
文档ID:399788543
多线程端口扫描器Java课程设计报告源代码.doc_第1页
1/23

山东科技大学 操作系统课程设计李贞良专业名称:________软件工程______________班 级:________10级三班_____________学 号: 201001050518___________信息科学与工程学院二零一三年一月目 录1 设计任务与要求 42 系统功能描述 42.1 功能概述 42.2 本系统要实现的功能 43 系统总体设计 53.1 总体分析 53.2 界面设置构思图 53.3 界面使用设置构思 53.4 后台设计构思 64 系统详细设计 74.1 界面设计 74.2 界面设计图 74.3 后台设计 85 实现与测试 115.1 运行要求与环境 115.2 运行程序流程图 125.3 运行界面 136 设计总结 15参考文献 16附件 16多线程端口扫描器1 设计任务与要求加深对《Java面向对象程序设计》课程所学知识的理解,进一步巩固 Java语言的语法规则分析系统的可行性,让系统有一个明确的方向,使开发更具合理性,并能分析出系统的具体流程,为后面的开发做好铺垫明确本次课程设计所要用到的技术点并到网上搜索以及查阅相关的书籍来搜集资料。

通过编写一个基于Java的应用系统综合实例,来掌握Java语言编程技巧并学会编制结构清晰、风格良好的Java语言程序,从而具备解决综合性实际问题的能力,学会使用Java编程工具,如EditPlus,Eclipse等2 系统功能描述2.1 功能概述多线程端口扫描器是实现计算机的端口的扫描,只要在在前台设置好所要扫描的IP、起始端口、结束端口以及所要用到的线程数,点击扫描,就可以扫描到所输入IP地址主机的开放端口,并显示在主窗体中;点击退出,则可以退出该程序IP设置应为所在主机的IP地址,起始端口和结束端口应为0~65535之间的一个数,且起始端口应小于结束端口的大小线程数为0~200之间的一个数点击开始后就会运行,直到扫描完毕显示出开放端口,如果没有开放端口,则只显示扫描完毕2.2 本系统要实现的功能① 端口扫描功能:扫描开放的端口,并将扫描到的开放端口号送到前台② 图像显示功能:显示界面图形③ 多线程功能:当客户端要求与服务器端建立连接时,服务器端就将用到多线程功能,为每一个建立起来的连接创建一个线程④ 异常抛出功能:对于明显的错误,能提示出错误的类型并结束程序的运行3 系统总体设计3.1 总体分析本程序分为前后台系统,后台系统用于扫描主机开放端口,并把节扫描的数据送至前台窗口显示;前台要显示扫描的结果,所以应为一个窗口,这个窗口应能够设置主机的IP地址,设置端口的开始端口、结束端口和线程数,并且还能够显示扫描的状态。

在中央是显示结果的窗体本程序还应能够有控制扫描的状态命令,附加设置最小化和关闭按钮3.2 界面设置构思图图1 系统构思图3.3 界面使用设置构思当出现如图所示的界面时,填写好要扫描的IP地址,需要扫描的端口范围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕流程图如下:界面出现填写IP地址或者用默认的IP设置扫描需要的线程数或者是用默认的线程数单击命令按钮开始扫描扫描结束,显示结果显示在结果显示区域是否继续退出结束否是图2 系统构思流程图3.4 后台设计构思后台系统使用Scanner和Scan类,创建前台布局和创建扫描端口、事件处理,并且能对简单的错误进行判断,显示错误原因调用数据处理包,处理异常情况;调用皮肤包,美化显示窗口4 系统详细设计4.1 界面设计本程序界面图形设计要能清楚显示扫描后的结果,并且能很好的体现出界面的整洁大方,但并不失去吸引人眼球的画面,所以在做界面的时候考虑了界面的色彩,并且添加了皮肤,界面上面的字体设置和windows窗口设置一样采用宋体,界面上的按钮不设置过多的按钮,仅设置有必要的按钮即可,界面设置大方。

使用的时候有默认的IP地址、需要扫描的端口和线程数,如果需要扫描其他主机,只需要填写好要扫描的主机的IP地址,需要扫描的端口范围和线程数,单击命令提示按钮就可以开始扫描,扫描结果就会显示在中间的扫描结果显示区域,在扫描状态显示区就会显示是否扫描完毕4.2 界面设计图本程序采用小窗口形式,外围大小为170mm*90mm,字体采用宋体五号,结果显示区域框架大小为160mm*45mm,底色为粉红,结果显示字幕为主机地址加开放端口添加个性皮肤其余地方设置按钮和扫描的主机地址、端口和线程数设计的预计页面图形如图:添加个性皮肤显示粉红底色图3 系统界面设计图4.3 后台设计本程序使用了为主要的Scanner类和Scan类Scan类的作用是创建线程扫描端口,然后把结果显示到前台Scanner类的作用是构造前台布局,调用Scan类添加事件处理,对输入进行错误判断,如果输入不在允许的范围之内则显示相关错误在本程序中用到了网络编程的两个类,下面介绍这两个类的常用方法InetSocketAddress类构造方法如下:l InetSocketAddress(InetAddress addr, int port):根据 IP 地址和端口号创建套接字地址。

l InetSocketAddress(int port):创建套接字地址,其中 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 void 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包的的描述:提供用于颜色空间的类它包含了基于国际色彩联盟 (ICC) 配置文件格式规范的颜色空间实现它还包含了基于 ICC 配置文件格式规范的颜色配置文件用来使界面更加具有色彩Result.setBackground(Color.PINK);//设置窗口为粉红l java.awt.event 的描述:提供处理由 AWT 组件所激发的各类事件的接口和类事件由事件源所激发,向事件源注册的事件侦听器可接收有关特定事件类型的通知此包定义了事件和事件侦听器,以及事件侦听器适配器,它是让事件侦听器的编写过程更为轻松的便捷类在本程序中使用:public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("Start"))…………}l io.IOException包的描述:用来处理io的错误,不仅仅是文件读写,还包括很多stream的读写,而且throws是用来放在函数定义的函数体前函数名后的,表示这个函数将会在出现异常的书后会抛出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, 299, 120); DLGINFO.setText("错误的端口号或线程数!端口号和线程数必须为整数!"); DLGINFO.setBounds(10, 20, 280, 20); OK.setBounds(110, 50, 60, 30); DLGError.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模型一个Java GUI通常由顶层容器、中间容器以及多个原子组件组成每个原子组件或容器都可能触发相应事件的产生容器是一类能够在其中容纳其他组件的特殊组件Swing的GUI组件类是按照类属层次以树状结构进行组织的在这个树的最顶层,即树的根部,使一个最基本的容器类,被称为顶层容器Swing 提供了三个通用的顶层容器类JFrame,JDialog和JAppletJFrame提供了基于窗体的应用程序,JDialog提供对话框形式的界面,JApplet提供Java小应用程序的界面形式在顶层容器下是中间容器,用于容纳其他的组件通常窗格本身在显示界面中是看不到的面板类Panel是一种中间容器,它的唯一作用是使组件更容易定位顶层容器通过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 javax.swing.tree:包括对树形组件进行操作的类和接口。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档