AVA语言虽然在TCP/UDP传输方面给予了良好的定义,但对于网络层以下的控制,却是无能为力的。JPCAP扩展包弥补了这一点,jPcap是一个可以让java工作在链路层的类库;当然,它底层还是使用了本机API通过Jini调用,在javaAPI中得到数据。JPCAP实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。
Jpcap文件扩展包使用方法
首先,使用Jpcap的几个小问题:
我们为什么需要Jpcap?
什么是Jpcap?Jpcap的工作原理是什么?
怎么配置Jpcap(Jpcap的安装)?
Jpcap使用步骤
Jpcap有啥特性?
一。我们为什么需要Jpcap?
Java的.net包中,给出了传输层协议 TCP和UDP有关的API,用户只能操作传输层数据,要想直接操作网络层{比如自己写传输层数据报(自己写传输层包头),或者自己写好IP数据包向网络中发}则是无能为力的。 而JPCAP扩展包弥补了这一点,使我们可以支持从网卡中接收IP数据包,或者向网卡中发送IP数据包。
二。什么是Jpcap?Jpcap的工作原理是什么?
Jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用wincap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性。
三。怎么配置Jpcap(Jpcap的安装)?
Jpcap下载地址: http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/download.html
下载后,直接安装,安装,将生成的jar文件和动态库 dll 文件分别拷到
%JAVA_HOME%\lib\ext\ 和 %JAVA_HOME%\jre\bin\ 目录下。
因为Jpcap是调用的wincap,所以必须将动态库放入jre/bin下。 将jar放入ext下,则无需在项目中再加载该jar包
四。Jpcap使用步骤
1.首先,获得所有网卡列表
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
2.通过网卡,打开一个捕捉器。 //openDevice(NetworkInterface intrface, int snaplen, boolean promics, int to_ms); JpcapCaptor captor=JpcapCaptor.openDevice(device[index], 65535, false, 20);
各个参数意义:
intrface 需要监听的网卡
snaplen 每次捕获的数据包最大长度(设置为IP包最大长度即可)
promics 是否过滤(Mac地址不是当前网卡的IP数据包)
to_ms 超时时间
3.通过捕捉器捕获数据:
有两种方式:
3.1.回调方法
3.1.1.实现一个方法处理器接口的类PacketReceiver,并将该类的一个对象,注册到捕获器中。(回调方法的实现, 其实就是监听器模型)
3.1.2.将消息处理器(PacketReceiver) 注册到捕获器(JpcapCaptor)有两种方式
captor.processPacket(int number,PacketReceiver reciver);//1 loopPacket(int number,PacketReceiver reciver);//2
参数意义:
第一个参数为需要捕获的IP包个数,-1表示一直捕获。
第二个参数表示需要注册的处理器。
processPacket() 和 loopPacket() 的区别:
Tutorial中给出的说法为:
Usually you might want to use processPacket() because it supports timeout and non_blocking mode, while loopPacket() doesn't.
可是,processPacket() 和 loopPacket() 两个方法明明都是通过回调方法实现的,回调方法使用监听器模型,不就是在某个模块被调用的时刻不确定,才使用的嘛?如果是这样,那么根本就没有block存在啊? 此处还请高手指点。
另外,自己做的测试中:使用loopPacket()的时候,会一直有回调,但是使用processPacket()程序直接执行完就结束了,对捕捉器设置了nonblock为flase也没用?
3.2.主动获取。
通过捕获器的getPacket() 可以主动的,一个数据包一个数据包的获取。
比较:
主动获取,可以每次需要处理数据包的时候,自己去主动获取。然后写出处理逻辑。但是因为不知道何时去产生数据包,而一直去调用getPacket() 的话,无疑效率是很低的。(主动获取,不管有没有包,都会一直执行循环去获取)
通过回调方法,可以在产生需要的数据包时,调用我们的处理逻辑,无疑更优美。
五。使用Jpcap能做的事
1.Jpcap是直接抓取经过数据链路层的数据包。 因此可以自己写IP数据包直接发送给数据链路层。
2.Jpcap会对抓取到的数据包进行一定程序的解析,根据数据包内容,将数据包封装为对应的对象()。
3.根据用户设定的信息,过滤数据包(其实就是在解析的时候,对不需要的数据直接丢弃,不解析)
4.Jpcap 只是直接从数据链路层上读取数据,并向数据链路层中发送数据,因此,Jpcap并不能操作 其他程序从数据链路层中读数据或者向网卡中发送数据。(IP层协议程序)
因此,我们可以使用Jpcap:
1.监控网络内容
2.自定义传输层乃至网络层网络协议(net包中,我们只能自定义引用此协议)
正在进行:使用Jpcap,进行ARP欺骗,从而使整个子网的IP包都发给我,于是,可以监控整个局域网。
- PC官方版
- 安卓官方手机版
- IOS官方手机版

















oelove婚恋交友系统v8.1 十周年版
sqltoy-orm框架v4.18.13最新版
flutter聊天源码开源完整版
最新版抖商精灵源码4.1暖场升级版
完整版经典C#WinForm实例源码共200个
android5使用poi读取excel源代码
香程互赞宝源码免授权版
2020新版双端影视APP源码完整免费版
BCM文件转换工具(BCM源码格式化)2.7.2 简体中文版
易语言资源网源码下载工具1.0 中文免费版
缩狗图床源码免费版
24个c++游戏源码完整版
嵌入式图像处理C语言源码免费下载
腾讯AI语音合成源码最新免费版
DSShop单用户B2C开源PHP商城系统TP框架1.6 最新版
易之源(最好的源码解析工具)v1.0 免费版
妖气山视频管理系统源码免费下载
魔性机器人网页代码免费下载
净网小助手源码2.2.1 最新完整版
易语言源码误删恢复器1.0 官方版
微信小程序模板源码50个实用程序
Android poi 操作doc excel pdf
Amoli私有云4.2.2 2019.08.08 最新版
LaySNS轻社区系统2.55 最新版
可可网络验证系统9.5 官方版
源码编辑器软件3.4.13 电脑版
Activiti(开源bpm软件)6.0.0 官方最新版
悟空crm系统源码9.0_20191202 官方最新版
帝国网站管理系统7.5.0 官网正式版





一键破解他人程序修改版权源码
Android Studio 源码2.4 免费下载
33款易语言皮肤模块2.1 绿色免费版
MySQL的数据库管理工具(phpMyAdmin)4.4.12
ewebeditor 在线编辑 FOR ASPv4.4 完整版
易语言小说阅读器源码
CF魔方人机一键卡枪源码2017 【新增AK47黑武