资源描述
本页为作品封面,下载后可以自由编辑删除,欢迎下载!!!
精
品
文
档
1
【精品word文档、可以自由编辑!】
课程设计说明书
设计名称: 网络工程应用综合课程设计
题 目: 公司局域网的组建
利用ICMP包进行Ping程序设计
学生姓名:
专 业:
班 级:
学 号:
指导教师:
日 期: 年 月 日
一、课程设计目的
1、巩固网络工程专业相关理论知识,提高网络工程相关软硬件综合应用能力;
2、加强网络工程设计、分析能力,熟悉掌握局域网架构相关技能;
3、深化网络程序设计技能,提高网络编程综合设计能力;
4、掌握网络管理的常用工具,提高网络管理及故障分析、处理能力;
5、熟练掌握常见网络通信设备配置技能;
6、培养独立分析问题和解决问题的能力以及创新能力和创新思维;
7、培养书写综合设计报告书的能力。
二、课程设计要求
1、根据设计任务要求,选择课程设计的方案。
2、根据需求进行网局域网系统设计。运用已学过的知识进行一个简单的网络规划与设计;通过设计,基本掌握中小型局域网网络设计及实现的过程。针对具体网络情况划分子网,分配IP地址;配置主机的TCP/IP属性,保证网络连通性和所有主机都进行Internet连接。
3、进行网络程序设计。该部分包括运用WinSocket通信原理进行C/S、B/S网络程序设计等。要求论述网络通信基本原理,选用常用的程序设计语言/工具(任选一种自己熟悉,包括VC、Java、.net、J2EE、VB等),进行网络通信系统设计。
4、根据需求进行网络管理系统设计。运用已学过的知识进行一个简单的网络管理系统设计;通过设计,基本掌握网络管理系统实现原理及其应用过程。包括SNMP网络管理体系结构、协议PDU、实现原理;实际管理网络构架;Manager、Agent配置;管理数据获取;网络控制等;结合Ethernet/Sniffer等软件进行数据包截获、协议内容分析。
5、熟练掌握网络常见设备配置(路由器、交换机)。
三、课程设计内容
本课程设计按模块进行,任务书共提供3个模块;根据自己的专业知识结构,任选其中2个模块作为自己的课程设计内容;考虑到每个同学的知识面不一样,具体每个模块提供了一个以上的子模块,根据自己的具体情况,选择其中的一个子模块进行设计。
四、 进度安排
序号
起始时间
结束时间
内 容
备注
1
2
3
五、 完成后应上交的材料
在本课程设计完成后需要提交的成果和有关文档资料包括:
1、 课程设计的说明书(课程设计报告)。
2、课程设计有关源程序及可运行程序(光盘或电子邮件)。
3、其他需要提交的材料(如非常用开发工具或平台、模拟或仿真环境等)。
六、 总评成绩:
指导教师 签名日期 年 月 日
系 主 任 审核日期 年 月 日
目 录
一、任务分析 5
1.1公司局域网的组建分析 5
(1)背景描述 5
1.2网络测试程序设计分析 7
1.3网络管理设备配置分析 8
1.3.1环境分析 8
1.3.2背景分析 8
1.3.3内容分析 9
二、总体方案的设计 9
2.1公司局域网的组建方案设计 9
2.1.1设计内容 9
2.1.2设计原理 10
2.1.3具体方案 11
2.2网络测试程序设计方案设计 14
2.2.1设计内容 14
2.2.2设计原理 14
2.2.3具体方案 15
2.3网络管理设备配置方案设计 27
2.3.1设计内容 27
2.3.2设计原理 27
2.3.3具体方案 27
三、心得体会 27
四、参考书籍 28
一、任务分析
1.1公司局域网的组建分析
(1)背景描述
某公司拥有主机数240台,分布于整座大厦内。该大厦分为5层,其中经理室(主机5台)和人力资源部(主机10台)位于该大厦的顶层,财务部(主机20台)与市场营销部(主机20台)位于4层,其它的部分和楼层分布分别为:网络设计部1部(主机50台)---3层、网络设计部2部(主机50台)---2层、培训部(主机50台)---1层。
(2)特性要求
公司局域网建设的前提在于应用信息技术、信息资源、系统科学、管理科学、行为科学等先进的科学技术不断使人们的办公业务借助于各种办公设施(主要是指计算机)以达到对单位内部工作的统一管理。中小型办公网目前存在很多的问题,主要集中在资料统筹管理,财务资料安全性和内部与Internet的连接上。一般中小型企业的资料以被录入到微机中,但在资料打印﹑文件共享﹑应收账目查询﹑库存查询﹑连接到Internet等方面缺乏功能模块的支持。 根据企业办公要求此网络将具备以下特点:
·灵活性,各种部件可以根据用户需要自由安放,即不受物理位置和设备类型的局限,但总体采用综合布线方案。
·独立性,有清晰合理的层次结构便于维护,各个子系统之间相互联接的同时又不影响其它子系统的正常使用。
·高扩展性,用户可增加硬件设备,无论各硬件设备技术如何发展,都能很方便的连接到系统中去。
(4)先进性.
·模块化,在布线系统中除去敷设在建筑物内的线缆外其余各接插部件都是模块化部件,方便管理和使用。
·开放性,保证系统良好开放性能够和其它网络互联;
·兼容性,采用综合布线方案.可支持保安系统,电话系统,计算机数据系统,会议电视,监视电视等。 构建中小型网络的第一步是设计网络基本结构,即根据企业的硬件基础和客户应用需求,选择合适的网络操作系统和
(3) 拓扑结构
为使网络规划经得起考验,在规划中应对网络协议、软硬件体 系等核心因素做充分论证。建网方向面向应用,充分利用现有资源,结合应用和需要的变化,制定相应的方案。 目前,应用比较广泛的中小型网主要有对等网和采用Client/Server模式的网络(简称Client/Server局域网)。
·对等局域网 对等网不需要专用的服务器,网络中的每台机器既是服务器也是工作站,所以又称点对点网络(PeerToPeer)。因此,在这种网络中每台微机不但有单机的所有自主权,而且可共享网络中各计算机的处理能力 速度还比较低的情况下,对等网具有独特优势。对等网建网容易,成本较低,易于维护。它的缺点是网络中的文件存放非常分散,不利于数据的保密,同 时网络的数据带宽受到很大的限制,不易于升级。对等网适用于一些小单位,如微机数量较少(30台以下),且微机布置较集中的情况。对等网采用的操作系统通常有Windows98系统、Windows 2000 Pro系统、Windows 2000 Server系统、Windows 2000 Advanced Server系统、Windows XP系统。
·就客户机/服务器局域网客户机/服务器方式以太网是目前小型办公网络较多采用的一种方式,有使用UNIX、NetWare、Windows 2000 Server、Windows Server 2003系统等组建方式。客户机/服务器网中,至少有一个专 用的服务器来管理、控制网络的运行。它所具有的功能有文件共享:用户间 文件可以交流,共享;安全管理:用户管理、资源访问权限管理;打印机共 享:一台或几台打印机,整个网络共享;共享E-MAIL和FAX功能;通过一条线路上INTERNET;实现RAID5(廉价磁盘阵列)保护数据。 与对等网相比,客户机/服务器网有着突出的优点:网络系统稳定,信息管理安全,网络用户扩展方便,易于升级。客户机/服务器网的缺点是需专用文件服务 器和相应的外部连接设备(如HUB),建网成本高,管理上也较复杂。这种网 络结构适用于计算机数量较多,位置相对分散,且传输的信息量较大的情况。客户机/服务器网采用的操作系统通常有Netware系统、Windows 2000 Server 系统。
1.2网络测试程序设计分析
1、背景分析:Ping程序是一个很常用的网络测试工具,利用ping可以检查网络是否能够连通,用好它可以很好地帮助我们分析判定网络故障。应用格式:Ping IP地址。该命令还可以加许多参数使用,通过对ICMP回应报文的分析出更加详细的网络分析信息,故是一个很实用的工具。故实现该程序需要对ICMP的相关网络知识有清晰的认识,并对Linux下的网络编程有一定的基础。
2、功能分析:实现对ip地址和主机地址(包括网络地址)的简单ping程序,能够发送ICMP_ECHO请求报文,并接受ICMP_ECHORELAY回应报文。并显示相关的ttl和往返时间差等信息。
3、网络测试程序的模块分析:
(1) Ping主模块:主函数是本程序的核心部分,它基本是调用其他模块的函数来实现最终功能,其主要布骤包括:定义及初始化各个全局变量、打开socket套接字、设置接收和发送超时值、域名地址解析、分配内存、创建及初始化ICMP报文、发送ICMP请求报文、接收ICMP 应答报文以及解读应答报文和输出Ping结果,最后释放占用的资源。这些步骤的功能实现由各个模块函数进行实现
(2) 打包模块:功能控制模块主要是为其他模块提供可调用的函数,该模块主要包括参数获取功能、计算ICMP数据报文检验和ICMP数据包构造
(3) 解析报文模块:数据报解析模块提供了解读IP选项和解读ICMP报文的功能,根据ICMP报文相关字段,并返回得出的相关功能描述。
(4) 发送模块:利用建立好的socket套接字,像目的IP发送打包模块构建好的数据报
(5) 接收模块:接受回应本程序发出的ICMP的echo请求回应报文,交由解析模块解析,并将相关功能描述返回上一层
1.3网络管理设备配置分析
1.3.1环境分析
本次的模块三部分的子模块二的内容,主要都是在模拟的环境当中进行的。所选取的模拟软件是cisco公司出品的packettracer5.0进行对于实际的网络环境进行仿真实践。
1.3.2背景分析
仿真一:仿真一的网络拓扑结构相对简单,但是没有一个实际结合的具化对象。拓扑环境是一个简单的小型网络,三台路由器通过ospf进行通信,主路由器再分别接入到tftp的备份服务器以及接入ISP。
仿真二:这个部分是一个虚拟公司xyz的网络配置。XYZ 公司在 WAN 连接中混合使用帧中继与 PPP。HQ 路由器通过 NAT 提供对服务器群和 Internet 的访问。另外 HQ 还使用基本的防火墙 ACL 来过滤入站流量。每台分支路由器都配置为支持 VLAN 间路由和 DHCP。路由过程通过 EIGRP 以及静态路由和默认路由完成。每个交换网络上都配置了 VLAN、VTP 和 STP。每个子网络中还需要对无线网络的部分进行部署。
1.3.3内容分析
仿真一:配置路由器,包括 OSPF 路由、身份验证以及 Cisco IOS 映像升级和路由器的开机自启的动作设置。
仿真二:配置路由器的基本设定,在集中星型拓扑中配置帧中继、将 PPP 的身份验证方式配置为 CHAP 和 PAP、配置静态 NAT 和动态 NAT 、配置静态路由和默认路由
二、总体方案的设计
2.1公司局域网的组建方案设计
2.1.1设计内容
① 针对网络的实际情况进行内部网络拓扑的设计,要求:全网采用2层的结构,并且为了网络的稳定性,考虑采用冗余拓扑。同时要求经理室与网络的核心设备相连。
②该公司内网IP 地址规划:192.168.2.0/24 ,使用VLSM和 CIDR,并对不同的部门实现VLAN划分技术。
③全网布线采用UTP6类线缆,要求连接用户使用100BASE-T的连接方式,设备之间采用1000BASE-T方式。
2.1.2设计原理
(1)网络拓扑
冗余拓扑是指拓扑图中没有关节点,即任何一个节点失效不影响整个网络的连通性。简单地说就是关键网络节点有备份,网络正常运行时采用负载均衡方式运行,若一个节点失效则自动切换到备份节点。从而保证了网络的稳定性。
优点:冗余拓扑结构能解决单点故障的问题,使得网络具有稳定性。
缺点:
a)广播风暴
b)多帧COPY
c)MAC表不稳定
对于冗余拓扑带来的问题,可以使用Sanning-Tree Protocol解决。原理就是把冗余拓扑结构中的某个端口置于BLOCK的状态,在另一条链路断开时,再打开该端口。
(2)子网划分
CIDR(无类型域间选路,Classless Inter-Domain Routing)是一个在Internet上创建附加地址的方法,这些地址提供给服务提供商(ISP),再由ISP分配给客户。CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担。
CIDR 对原来用于分配A类、B类和C类地址的有类别路由选择进程进行了重新构建。CIDR用 13-27位长的前缀取代了原来地址结构对地址网络部分的限制(3类地址的网络部分分别被限制为8位、16位和24位)。在管理员能分配的地址块中,主机数量范围是32-500,000,从而能更好地满足机构对地址的特殊需求。
CIDR 地址中包含标准的32位IP地址和有关网络前缀位数的信息。以CIDR地址222.80.18.18/25为例,其中“/25”表示其前面地址中的前25位代表网络部分,其余位代表主机部分。
CIDR建立于“超级组网”的基础上,“超级组网”是“子网划分”的派生词,可看作子网划分的逆过程。子网划分时,从地址主机部分借位,将其合并进网络部分;而在超级组网中,则是将网络部分的某些位合并进主机部分。这种无类别超级组网技术通过将一组较小的无类别网络汇聚为一个较大的单一路由表项,减少了Internet路由域中路由表条目的数量。
(3)VLAN
VLAN(Virtual Local Area Network)的中文名为"虚拟局域网"。VLAN是一种将局域网设备从逻辑上划分成一个个网段,从而实现虚拟工作组的新兴数据交换技术。这一新兴技术主要应用于交换机和路由器中,但主流应用还是在交换机之中。
许多VLAN厂商都利用交换机的端口来划分VLAN成员。被设定的端口都在同一个广播域中。例如,一个交换机的1,2,3,4,5端口被定义为虚拟网AAA,同一交换机的6,7,8端口组成虚拟网BBB。这样做允许各端口之间的通讯,并允许共享型网络的升级。但是,这种划分模式将虚拟网限制在了一台交换机上。
第二代端口VLAN技术允许跨越多个交换机的多个不同端口划分VLAN,不同交换机上的若干个端口可以组成同一个虚拟网。
以交换机端口来划分网络成员,其配置过程简单明了。因此,从目前来看,这种根据端口来划分VLAN的方式仍然是最常用的一种方式。
2.1.3具体方案
①完整的网络拓扑图(网络拓扑图使用Visio工具进行设计绘制)
②结合网络拓扑图进行IP地址的规划。
由于给定只有一个c类地址,能分配给子网主机的地址只有254个。而组网要求配置205台主机,因此网段的划分不能太小,以至于无法使得同一部门建立一个VLAN。所以培训部和人力资源部,财务部和经理室各自共用一个vlan。具体ip地址分配如下表:
Ip地址分配表
楼层
公司部门
子网网络号
IP地址范围
默认网关
VLAN号
一层
培训部(50台)
192.168.2.0/26
192.168.2.2/26-
192.168.2.51/26
192.168.2.1/26
10
二层
网络设计2部(50台)
192.168.2.64/26
192.168.2.66/26-
192.168.2.115/26
192.168.2.65/26
20
三层
网络设计1部(50台)
192.168.2.128/26
192.168.2.130/26-
192.168.2.179/26
192.168.2.129/26
30
四层
市场营销部(20台)
192.168.2.192/27
192.168.2.194/27-
192.168.2.213/27
192.168.2.193/27
40
财务部(20台)
192.168.2.224/27
192.168.2.226/27-
192.168.2.245/27
192.168.2.225/27
50
五层
人力资源部(10台)
192.168.2.0/26
192.168.2.52/26
192.168.2.61/26
192.168.2.1/26
10
经理室(5台)
192.168.2.224/27
192.168.2. 246/27-
192.168.2.250/27
192.168.2.225/27
50
备注:默认网关IP地址为每个子网的第一个IP号。
③结合网络拓扑图进行Packet Tracer设计。
2.2网络测试程序设计方案设计
2.2.1设计内容
进行网络程序设计部分包括运用WinSocket通信原理进行C/S、B/S网络程序设计等。要求论述网络通信基本原理,选用常用的程序设计语言/工具(任选一种自己熟悉,包括VC、Java、.net、J2EE、VB等),进行网络通信系统设计。利用ping命令执行后显示出被测试系统主机名和相应IP地址、返回给当前主机的ICMP报文顺序号、ttl生存时间和往返时间rtt(单位是毫秒,即千网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。理解ICMP的工作原理,包括协议语法、语义、时序三要素。在此基础上对ICMP协议进行分析;并利用高级语言进行Ping的网络程序设计。借助于ICMP回应请求/应答报文测试宿主机的可达性。设计内容可能包括:ICMP协议语法、语义、时序分析。
2.2.2设计原理
(1)Ping程序设计:
Ping的原理:主机向远程计算机发出ICMP回应请求以后,远程计算机会处理这个请求,然后生成一条回应应答消息,再通过网络传回给发送主机;假如由于某些原因不能抵达目标主机,就会生成对应的ICMP错误消息由那个路径上某处的一个路由器返回.如果是与远程主机的连接没问题,只是远程主机已经关机,便需要由自己的程序来执行超时检查.
由于ICMP并无关联端口,设计Ping时使用的就是ICMP协议的原始套接字,使用当前的PID当作标识符(identifier)
ICMP报文格式
(2)网络编程相关
JAVA本身只能对网络层及以上高级层进行编程,所以要开发ICMP包需使用JpcCap封装包进行开发。此次开发主要使用以下3个类:
i.NetworkInterface:该类的每一个实例代表一个网络设备,一般就是网卡。
ii.JcapCaptor:该类提供了一系列静态方法实现一些基本的功能。该类一个实例代表建立了一个与指定设备的链接,可以通过该类的实例来控制设备,例如设定网卡模式、设定过滤关键字等等。
iii.JcapSender:该类专门用于控制数据包的发送。
(3) 图形界面设计;利用SWING组件进行界面设计。
2.2.3具体方案
(1)主程序流程图
v主程序
发送ICMP报文模块
网卡设备信息模块
接收报文模块
(2)接收模块监听网卡接口
UDP包?
TCP包?
判断ICMP包?
是
是
是
否
否
否
程序开始
输出TCP
输出其他包信息
输出UDP
输出TCP
(3)发送模块
选择网卡接口
搜索成功?
否
否
是
程序开始
发送结束
填入目的IP
搜索本机网关
封装ICMP请求包
发送ICMP请求包
接收ICMP响应包
是否超时?
是
(5)源程序代码及说明
i.ICMPApplication.java代码
package network;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.io.IOException;
import .Inet4Address;
import .InetAddress;
import javax.swing.*;
import jpcap.JpcapCaptor;
import jpcap.JpcapSender;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
public class ICMPApplication extends JFrame implements ActionListener {
private static final long serialVersionUID = -8007074659018102960L;
int index;
// 网卡信息
JLabel jl_1 = new JLabel("网卡设备信息");
JTextArea jta_1 = new JTextArea(20, 20);
JPanel jpl_1 = new JPanel();
// 主面板显示捕获的包信息以及发送的ICMP包
JLabel jl_receive = new JLabel("捕获报文包情况");
JTextArea jta_receive = new JTextArea(25, 40);
JLabel jl_send = new JLabel("发送ICMP包情况");
JTextArea jta_send = new JTextArea(25, 40);
JPanel jpl_main = new JPanel();
// ip地址栏,发送按钮,数量包
JButton btn_clear = new JButton("清空");
JLabel jl_ip = new JLabel("目的IP地址");
JTextField jtf_ip = new JTextField(20);
JLabel jl_num = new JLabel("发送包数量");
JTextField jtf_num = new JTextField(4);
JButton jbtn_captor = new JButton("开始侦听");
JButton jbtn_send = new JButton("发送");
JLabel jl_flag = new JLabel("网卡选择(1)");
JTextField jtf_device_type = new JTextField(4);
JPanel jpl_south = new JPanel();
NetworkInterface[] devices;
JpcapCaptor captor;
JpcapSender sender;
ReceivePacketThread receivePacketThread;// 实现runnable的接收类
SendICMPThread sendICMPThread;// 发送线程
boolean captor_flag = false;// 标记侦听开始,暂停,默认停止
public ICMPApplication() throws IOException {
init();
devices = JpcapCaptor.getDeviceList();
getNetworkIntefaceInfo();
}
/**
* 初始化面板
*
* @throws IOException
*/
public void init() throws IOException {
setLayout(new BorderLayout());
// 显示网卡信息
jta_1.setLineWrap(true);
jta_1.setAutoscrolls(true);
jta_1.setEditable(false);
jpl_1.setLayout(new BorderLayout());
jpl_1.add("North", jl_1);
jpl_1.add("Center", new JScrollPane(jta_1));
add("West", jpl_1);
// 显示主面板
jta_receive.setLineWrap(true);
jta_receive.setAutoscrolls(true);
jta_receive.setEditable(false);
jta_send.setLineWrap(true);
jta_send.setAutoscrolls(true);
jta_send.setEditable(false);
JPanel temp_receive = new JPanel();
JPanel temp_send = new JPanel();
temp_receive.setLayout(new BorderLayout());
temp_send.setLayout(new BorderLayout());
temp_receive.add("North", jl_receive);
temp_receive.add("Center", new JScrollPane(jta_receive));
temp_send.add("North", jl_send);
temp_send.add("Center", new JScrollPane(jta_send));
jpl_main.add(temp_receive);
jpl_main.add(temp_send);
add("Center", jpl_main);
// 显示下方发送面板
jtf_device_type.setText("1");
jtf_num.setText("1");
jpl_south.add(jbtn_captor);
jpl_south.add(btn_clear);
jpl_south.add(jl_ip);
jpl_south.add(jtf_ip);
jpl_south.add(jl_num);
jpl_south.add(jtf_num);
jpl_south.add(jbtn_send);
jpl_south.add(jl_flag);
jpl_south.add(jtf_device_type);
JPanel temp = new JPanel(new BorderLayout());
temp.add("Center", jpl_south);
add("South", temp);
this.setTitle("ICMP捕获及发送程序");
this.setSize(1200, 555);
this.setResizable(true);
this.setVisible(true);
// 清空按钮事件
btn_clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
jta_receive.setText("");
jta_send.setText("");
}
});
// 捕获按钮事件
jbtn_captor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
if (captor == null) {
jta_receive.setText("请先选择网卡\n");
return;
}
if (captor_flag == false) {
InetAddress thisIP = null;
for (NetworkInterfaceAddress addr : devices[index].addresses)
if (addr.address instanceof Inet4Address) {
thisIP = addr.address;
break;
}
try {
captor.setFilter(
" dst host " + thisIP.getHostAddress(), true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
receivePacketThread = new ReceivePacketThread(captor,
jta_receive, true);
receivePacketThread.start();
jbtn_captor.setText(" 停止 ");
captor_flag = true;
} else {
receivePacketThread.setFlag(false);
jbtn_captor.setText("开始侦听");
captor_flag = false;
}
}
});
// 发送按钮事件
jbtn_send.addActionListener(this);
jtf_device_type.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent arg0) {
}
@Override
public void focusLost(FocusEvent arg0) {
int size = JpcapCaptor.getDeviceList().length;
int i = Integer.valueOf(jtf_device_type.getText());
if (i < size) {
index = i;
setCaptor(index);
jl_flag.setText("网卡选择(" + index + ")");
}
}
});
}
// 获取网卡设备信息
public void getNetworkIntefaceInfo() {
for (int i = 0; i < devices.length; i++) {
jta_1.append("网卡设备(" + i + ")\n");
jta_1.append("名称:" + devices[i].name + "\n");
jta_1.append("MAC地址:\n");
for (byte b : devices[i].mac_address) {
jta_1.append(Integer.toHexString(b & 0xff) + ":");
}
jta_1.append("\n");
}
}
public static void main(String[] args) throws IOException {
new ICMPApplication();
}
@Override
public void actionPerformed(ActionEvent e) {
String dst = jtf_ip.getText();
String tempNum = jtf_num.getText();
Integer num = 0;
if (dst == null) {
jta_send.setText("请输入目的ip地址:\n");
return;
}
if (tempNum != null) {
num = Integer.valueOf(tempNum);
}
sendICMPThread = new SendICMPThread(jta_send, dst, num, index);
sendICMPThread.start();
}
/**
* 设置captor
*
* @param index
*/
public void setCaptor(int index) {
try {
captor = JpcapCaptor.openDevice(devices[index], 65535, false, 20);
} catch (IOException e) {
e.printStackTrace();
}
}
}
ii. ReceivePacketThread.java代码
package network;
import javax.swing.JTextArea;
import jpcap.JpcapCaptor;
import jpcap.PacketReceiver;
import jpcap.packet.ICMPPacket;
import jpcap.packet.Packet;
import jpcap.packet.TCPPack
展开阅读全文