如果你想捕获Java程序中的网络包,那么你需要一些辅助工具,因为核心Java API不能访问底层的网络数据。但Jpcap是一种提供在Windows或UNIX系统上进行这种访问的Java API。
Jpcap不是一种纯粹的Java解决方案;它依赖本地库的使用。在Windows 或 UNIX上,你必须有必要的第三方库,分别是WinPcap或libpcap。

Jpcap的工作原理 :
Jpcap使用一个事件模型来让你处理包。首先你必须创建一个执行接口jpcap.JpcapHandler的类。

public class JpcapTip implements JpcapHandler {
public void handlePacket(Packet packet){
System.out.println(packet);
}
}

为了捕获包,你需要告诉Jpcap你想用哪个网络设备来监听。API提供了jpcap.Jpcap.getDeviceList()方法以满足这一目的。这个方法返回一列字符串,你可以象如下使用它:
String[] devices = Jpcap.getDeviceList();

一旦你有了一个设备名称的目录,你必须选取一个用来监听:
String deviceName = devices[0];

选择一个设备之后,通过Jpcap.openDevice()方法打开它。openDevice()方法需要四个参数:即将打开的设备名,从读取每个包的最大字节数,说明是否将设备设为混杂模式的Boolean值,和以后调用processPacket()方法要使用到的超时值。
Jpcapjpcap = Jpcap.openDevice(deviceName, 1028, false, 10000);

openDevice()方法将一个参数返回到用以捕获的Jpcap对象。既然有了Jpcap实例,你可以调用processPacket() 或loopPacket()开始监听了。这两种方式都带有两个参数:捕获的最大包数可以是-1(说明没有限制);执行JpcapHandler的一个类的实例。

如果你调用processPacket(),那么Jpcap将一直捕获包,直到超过openDevice中规定的时限或达到了规定的最大包数。loopPacket()则将一直捕获包,直到达到最大包数,如果没有最大数限制,它将永远运行下去。就像下面这样调用:

jpcap.loopPacket(-1, new JpcapTip());

下面则是全部测试类的代码:

import jpcap.JpcapHandler;
import jpcap.Jpcap;
import jpcap.Packet; public class JpcapTip implements JpcapHandler {
public void handlePacket(Packet packet){
System.out.println(packet);
} public static void main(String[] args) throws java.io.IOException{
String[] devices = Jpcap.getDeviceList();
for (inti = 0; i < devices.length; i++) {
System.out.println(devices[i]);
}
String deviceName = devices[0];
Jpcapjpcap = Jpcap.openDevice(deviceName, 1028, false, 1);
jpcap.loopPacket(-1, new JpcapTip());
}
} 

为了执行这个类,你必须确保虚拟机可以找到Jpcap的本地库。在Window上,如果jpcap.dll在库地址目录中,Java命令如下:

java -Djava.library.path=lib -cp lib\jpcap.jar;. JpcapTip

执行测试类的输出则如下(出于篇幅考虑进行了缩减):

ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79)
00:00:00:00:00:00(192.168.15.34)
ARP REQUEST 00:06:5b:01:b2:4d(192.168.15.79)
00:00:00:00:00:00(192.168.15.34)
1052251329:525479 192.168.15.103->255.255.255.255 protocol(17) priority(0)
hop(
offset(0) ident(59244) UDP 1211 1211

JpcapHandler——Jpcap抓包处理相关推荐

  1. jpcap抓包,TCP数据包逻辑分析,TCP数据包解析

    1.jpcap抓包 https://github.com/kumqu/java-jpcap 2.TCP逻辑分析 3.TCP数据包解析 3.1 数据包解析源码 import com.alibaba.fa ...

  2. java jpcap 抓包并分析_java利用Jpcap实现抓包

    1.准备工作 Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制, 可以达到抓包的效果. Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包 ...

  3. java jpcap 抓包并分析_用Jpcap赶做了一个极其简陋版的TCP抓包程序

    Jpcap是一个能够抓取与发送网络数据包的Java组件. 你可以使用Jpcap从一个网络接口获取数据包,然后在Java中对它们进行分析和显示.同样也可以通过一个网络接口发送任意数据包.Jpcap当前能 ...

  4. Java 实现抓包程序

    前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 项目准备 1. 首先得有 java 编译环境,安装并配置好 jdk:2. 需要安装 Winp ...

  5. Java实现抓包程序(网络协议分析程序)

    前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 文章目录 前言 项目准备 一.抓包功能的基本实现 二.完整项目实现 1.界面布局 2.抓包功 ...

  6. java实现抓包jacap_java 抓包工具 jpcap的下载与eclipse配置

    1.jpcap的下载 1.1建议去官网上下载 官网jpcap下载 如果打不开的话,文末我会提供网盘的下载链接的 官网下载完成,解压之后 1.2WinpPcap双击安装即可,jacap1和jpcap2随 ...

  7. 使用 Jpcap 进行 ARP 抓包

    由于选修课网络协议分析的期末作业是关于网络协议方面的,而之前并没有使用 Java 进行过网络协议底层的编程经历,所以显得有些麻烦. Java 不能直接操作底层的网络协议,所以必须依靠 JNI 使用本地 ...

  8. 基于Java_使用Jpcap进行网络抓包并分析(6千字保姆级教程)

    文章目录 前言 一.Java搭建 winpcap开发环境 1. 名词解释 1.1 winpcap 1.2 jpcap 1.3 网卡 2. 搭建开发环境 2.1 安装winpcap 2.2 设置Jpca ...

  9. java 柱状图jar_GitHub - mafulong/NetworkExper: 计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存...

    jiWangShiYanByJava 计网实验,抓包,java,jigloo界面开发,柱状图,文件自定义保存 基于Winpcap的网络流量统计分析系统的设计与实现 一.实验内容描述 本实验是用java ...

最新文章

  1. 关于excel的join怎么做
  2. Exchange Server导出共存环境下的邮箱列表
  3. spring项目部署到resin4中的无法注入问题
  4. 高性能计算机储存部件硬盘,高性能计算机的磁盘系统结构.pdf
  5. Anscombe's Quartet 问题
  6. PyCharm+PyTorch0.4.0安装使用
  7. JanusGraph图数据库系统简介
  8. 微信支付之Native扫码支付功能
  9. mac 访问局域网其他电脑上的虚拟机
  10. COM---EXE中的服务器
  11. C++之char , signed char , unsigned char(转)
  12. 非激活窗口(Inactive Window)
  13. 借数字化东风带动营收增长,百融云创深耕金融SaaS成效如何?
  14. 双网卡数据共享(网卡转发)
  15. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda
  16. GPL协议,LGPL协议,MPL协议
  17. 带三方登录(qq,微信,微博)
  18. 电脑如何设置定时关机
  19. MATLAB与STK互联42:创建星座(Walker星座)
  20. c1灯光语言,汽车灯光使用大全与常用灯光语言

热门文章

  1. 唠唠 File API
  2. DS1820时序分析
  3. A D 20:基于S T M 32的DDS信号源设计
  4. golang中的图像image处理之马赛克效果
  5. 用Java实现递归策略算法的编写汇总
  6. 5 个可以加速开发的 VueUse 函数库
  7. 区块链技术在IoT领域的应用综述
  8. 用js动态生成html页面
  9. java 创建桌面宠物
  10. 零基础想考HCIP(华为认证网络工程师)需要准备什么?