这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的理念缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的各类系统很难达到老师的要求。

为了大家能够顺利并以最少的精力通过毕设,学长分享优质毕业设计项目,需要的自取。

目录

1.说明

2.设计思路

2.1 设计框架图

2.2 设计步骤

2.2.1 整体规划

2.2.2 程序运行流程


1.说明

本局域网监听软件主要利用Winpcap和Jpcap等工具进行开发,使用Java语言在Eclipse 3.2环境下进行开发。软件主要实现了对网络上的数据进行监听,并分析出每一协议层的传输数据和协议层上主要字段的数据,然后将其显示出来,同时进行动态更新;另外,添加了一些附加功能(指定对象监听、饼状图显示、界面选择等)。经过测试与分析,说明了该软件运行稳定、可靠,具有一定的实际应用价值。

2.设计思路

2.1 设计框架图

经过对Winpcap和Jpcap的了解,知道了如何截获数据包并进行处理,现在就要编写代码,将这些步骤嵌入到一个框架中,将数据包的处理结果显示出来,根据本软件所要实现的功能,本设计所需要实现的类结构如图所示。

java 系统监测包 java监控系统设计_java

 

2.2 设计步骤

2.2.1 整体规划

现在对程序进行如下设计:

(1)使用Eclipse 3.2开发的基于J2SE Swing的图形用户界面程序;

(2)允许多个窗口同时运行,因此用向量来存储已创建的窗口。为了使各个窗口间的监听不相互干扰,因此为每一个监听过程都开辟一个新的线程,在线程中完成从截获数据包到分析数据包到最后将结果显示出来的全部过程。

(3)将所有截获的数据包用向量存储,当然定义了数量上限。预计监听结果的显示如下:使用JTable组件显示每条分析完后的数据包,并进行动态更的新;若选中表格中的某一条记录时,则在JTree组件中将它所具有的全部协议显示出来,父结点为协议名,子结点为协议字段名,叶子结点为字段取值,同时将数据包的内容转换为字符串显示在JTextArea组件中。

2.2.2 程序运行流程

(1)程序的开始

程序主类为JSniffer,整个程序由此类中的main()函数进入,进行初始化,出现主界面,即JDFrame类的实例,然后等待主界面中的事件响应。

(2)准备监听

当主界面中执行开始监听事件时,创建JDCaptor类实例,这个类实际上就是数据包截获器。JDCaptor类首先调用JDCaptureDialog类,这是一个选择设备对话框,在JDCaptureDialog中使用Jpcap.getDeviceList()和Jpcap.getDeviceDescription()获取设备,根据界面选择设备,然后使用openDevice函数打开设备,返回Jpcap对象给调用它的JDCaptor实体。

(3)截获数据包

JDCaptor类开启一条线程,用来进行截获数据包处理。在此线程中使用刚才得到的Jpcap对象的processPacket()函数截获数据包。

(4)分析数据包

使用Jpcap类的包处理接口JpcapHandler handlePacket()进行截获的数据包的初步处理,每截获一个数据包都放入数据包向量packets中,则packets中存放的就是一次监听过程中所监听到的所有数据包。然后将packets传递给analyzer包中的所有类,即每截获一个数据包,就用所有已经定义的协议进行分析。

(5)分析结果显示

使用JTable控件来显示截获的数据包进过分析后的信息,每分析完一条,显示一条,至于显示哪些信息,由菜单中的“协议查看”下面的选项来决定。当执行选择table中某一行的事件时,用tree控件来显示此数据包对应于各层的协议,并用textarea控件将此数据包的内容转换为字符串完整的显示。

(6)流量统计

使用向量来存储每一个协议的所有的数据包,每分析完一个数据包后,在它所包含的协议的向量中加一。然后绘制每一层协议的饼状图,饼状图动态更新。

(7)数据更新

使用Timer类的start(),setRepeats()来进行动态更新,并通过此类中的事件响应来进行更新时的操作,即提示表格更新。

(8)指定对象监听

指定对象监听就是使用JSourceDialog来得到指定监听的主机的IP地址,监听内容是源IP为指定IP的数据包,如果符合条件则处理,不符合则丢弃。这个过滤处理在分析数据包JpcapHandler handlePacket()中完成。