步骤:

1) 下载并安装JDK(以前已提供并介绍了环境变量的配置,所以就不啰嗦了);

2) 下载并安装winpcap(可以下载最新版本)(压缩包里已经是最新成熟的版本);

3) 配置Jpcap路径:这一步也是最重要的一步。具体路径为,把Jpcap文件夹下lib文件夹里的Jpcap.dll复制到"C:\Program Files\Java\jdk1.5.0_16\jre\bin"文件夹里面(复制到你机器JDK文件夹->jre->bin,放到bin文件夹里面就可以了),再把Jpcap文件夹下lib文件夹里的Jpcap.jar复制到"C:\Program Files\Java\jdk1.5.0_16\jre\lib\ext"文件夹里面

这次是在网上找的个资料,看着还不错,记录下来

一。我们为什么需要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() 的话,无疑效率是很低的。(主动获取,不管有没有包,都会一直执行循环去获取)

通过回调方法,可以在产生需要的数据包时,调用我们的处理逻辑,无疑更优美。

转载于:https://blog.51cto.com/alinazh/1279020

Jpcap包的安装与配置相关推荐

  1. Charles抓包工具安装与配置

    在实际开发中,我们需要时常抓取线上的请求及数据,甚至是请求的html文档,js,css等静态文件来进行调试.在这里,我使用charles来进行以上操作.但是呢,charles需要进行一系列配置才能达到 ...

  2. fiddler抓包工具安装,配置https、移动端抓包、弱网设置

    下载 最新完全版需要收费,下载精简,官方精简吧下载地址 开启https抓包 菜单–Tools–Options–https–全部勾选–重启软件 移动端抓包 手机和pc处于同一网络 菜单–Tools–Op ...

  3. 抓包_Appium安装和配置

    1.安装配置Java SDK -[没有安装后面可能会报错] 下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-down ...

  4. centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php

    一.检查php是否已经安装,使用php -v,是否能够看到版本号,或者使用rpm -qa | grep php查看是否安装过. # yum remove php* -y 二.依赖包安装 Linux软件 ...

  5. centos7.4配置nginx php,centos7.4下安装配置PHP服务(源码安装)并配置nginx支持php

    一.检查php是否已经安装,使用php -v,是否能够看到版本号,或者使用rpm -qa | grep php查看是否安装过. # yum remove php* -y 二.依赖包安装 Linux软件 ...

  6. jenkins安装与配置---window,mis包直接安装

    https://my.oschina.net/aibinxiao/blog/1457218 Jenkins在Windows下的安装与配置 已经在https://jenkins.io/下载好了Windo ...

  7. 环境部署(java安装和配置,Tomcat安装和配置)(tomcat下部署war包)

    1,上传环境部署安装包到服务器上 2,解压安装包,并部署java #  tar -xf jdk-8u201-linux-x64.tar.g # mkdir /usr/java # cp  jdk1.8 ...

  8. Rpm包的安装与yum的配置

    RPM包管理器的常用命令和示例: 1.安装程序包: rpm [option]/path/to/package_file –i:安装程序包 –v:显示安装的过程 -h :显示安装进度 -vv:显示详细信 ...

  9. 通过rpm包安装、配置及卸载mysql的详细过程.

    通过rpm包安装.配置及卸载mysql的详细过程. 以MySQL-server-4.0.14-0.i386.rpm为例,放在/data目录下 cd /data rpm -ivh MySQL-serve ...

  10. Centos6.5 LAMP环境源码包安装与配置,附安装包百度网盘地址

    Centos6.5 LAMP环境源码包安装与配置 http://pan.baidu.com/s/1nvNruzv 安装包百度网盘地址 LAMP是一种web网络应用和开发环境,是linux,Apache ...

最新文章

  1. 网站栏目该如何做SEO优化?
  2. librtmp编译for android and ios 不要openssl
  3. 各浏览器抗uaf机制
  4. maven工程导入项目打开404_Maven依赖配置和依赖范围
  5. 甘特图 知乎_如何使用 Excel 绘制甘特图?
  6. 大厂必问的分布式究竟是什么鬼?
  7. IIS6.0应用程序池回收和工作进程【转:http://www.cnblogs.com/freshman0216/archive/2008/06/02/1212460.html】...
  8. 2-7 hash(2)
  9. 屏蔽节点的鼠标点击选择文字的方法
  10. python图形化监控系统界面_手把手教你实现一个可视化爬虫监控系统,酷炫的图形化界面...
  11. HTML:对话框插件thickbox使用技巧
  12. MSCRM plicklist 级联JS
  13. maven install过程
  14. 软考数据库考试有题库吗_软考数据库系统工程师考试心得
  15. echarts实现3D饼图
  16. 计算机无法从usb启动不了,无法从u盘启动【设置思路】
  17. 葛冬冬斯坦福专业_比较预测模型的表现冬冬与有马
  18. python excel 微信_Python读写Excel文件第三方库汇总,你想要的都在这儿!,微信文件第三方打开...
  19. Arai2自动添加tracker链接的方法
  20. 希尔顿与锦江集团续签合作协议,将在华开逾600家希尔顿欢朋酒店

热门文章

  1. 学qt的都干什么工作_【板绘前景】学板绘可以干什么工作?学多久才可以工作?好学吗?...
  2. 【POJ 3348】Cows【凸包裸题】
  3. 241.为运算表达式设计优先级(力扣leetcode) 博主可答疑该问题
  4. js 连mysql 延后_javascript – 异步并等待节点js中的MySQL调用
  5. sql create 在关键字 view 附近有语法错误_MySQL中,21个写SQL的好习惯,值得培养
  6. 解析json对象出现$ref: $.list[0]的解决办法
  7. HTTP协议详解(经典)
  8. [转]SAPUI5 (01) - OpenUI5环境搭建
  9. 2.2.4 ES 6语法与ES 5语法
  10. 自立,霸者的生存之道