`
amozon
  • 浏览: 134205 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
阅读更多
如果你想捕获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
分享到:
评论

相关推荐

    64位jpcap.jar及对应jpcap.dll下载

    标题 "64位jpcap.jar及对应jpcap.dll下载" 暗示了这是一个针对64位操作系统的Java库,主要用于网络数据包捕获和分析。jpcap是一个开源项目,它提供了Java接口来处理网络接口卡(NIC)的数据包捕获,类似于著名的...

    jpcap-1.0.jar

    《深入解析Jpcap库:基于jpcap-1.0.jar的网络数据包捕获与分析》 在计算机网络领域,数据包捕获和分析是至关重要的环节,它可以帮助我们深入了解网络通信的过程,排查故障,甚至进行网络安全研究。本文将详细探讨...

    JPcap_jpcap_

    《Jpcap:Java网络封包捕获库的深度解析》 Jpcap,全称为Java Packet Capture,是一个用于网络封包分析的开源库,专为Java编程语言设计。其核心功能是允许开发者在Java环境中捕获、过滤、分析以及回放网络数据包。...

    Java抓包工具 jpcap WinPcap

    Java抓包工具jpcap与WinPcap是网络分析和数据包捕获的重要工具,尤其在软件开发、网络故障排查和安全分析等领域中扮演着重要角色。本文将深入探讨这两个工具的功能、安装过程以及如何利用它们进行网络数据包的抓取和...

    Java jpcap抓包

    Java jpcap抓包是一种利用Java编程语言和jpcap库来实现网络数据包捕获的技术。jpcap是Java Packet Capture的缩写,是一个开源的网络协议分析库,允许开发者在Java应用程序中进行网络数据包的捕获和处理。在计算机...

    Jpcap详细使用说明

    《Jpcap详细使用说明》 Jpcap是一款强大的网络数据包捕获和发送的Java类库,由Keita Fujiiy在加州大学欧文分校研发。它利用Libpcap和原始套接字API,已在FreeBSD 3.x, Linux RedHat 6.1, Solaris,以及Microsoft ...

    net.sourceforge.jpcap的api

    与标准的libpcap库(主要用于C语言环境)相比,jpcap为Java环境提供了类似的接口,但同时也进行了额外的封装,使得Java开发者能更便捷地使用这些功能。 二、net.sourceforge.jpcap.jar的优势 ...

    Jpcap.dll和jpcap.jar

    **Jpcap.dll和jpcap.jar是Java网络包捕获库Jpcap的重要组成部分**。Jpcap是一个开源的Java库,它为Java程序员提供了网络数据包的捕获和分析功能,类似于知名的libpcap(在Unix系统上)和WinPcap(在Windows系统上)...

    jpcap.jar+Jpcap.dll

    《Jpcap:Java平台上的数据包捕获与分析库》 Jpcap是一个专为Java平台设计的数据包捕获和分析库,它允许开发者在Java应用程序中实现网络监控和数据包处理功能。这个库的核心组件包括两个主要部分:`jpcap.jar`和`...

    Java调用jpcap获取本机所有get请求

    Java调用jpcap库获取本机所有GET请求是一个实用的技术点,特别是在网络监控、数据分析或者测试场景下。jpcap是一个开源的Java库,它提供了对网络接口数据包捕获和分析的能力,类似于C语言的libpcap库。下面我们将...

    jpcap使用文档及jpcap.jar

    **Jpcap使用文档及jpcap.jar** Jpcap是一个强大的Java库,它为网络数据包捕获和分析提供了接口。这个库是为那些希望在Java环境中进行网络监控、数据分析或者网络安全研究的开发者设计的。Jpcap的全称是Java Packet ...

    Jpcap_Filter.rar_java 数据包_jpcap_jpcap java_包过滤

    `Jpcap` 是一个用Java编写的库,专门用于捕获、分析和过滤网络数据包。本篇文章将详细探讨`Jpcap`库及其在Java中的应用,特别是如何实现数据链路层的包过滤。 首先,我们要理解`Jpcap`是什么。`Jpcap`是Java Packet...

    jpcap.jar jpcap.dll

    《Java网络通信与jpcap库详解》 在IT领域,网络通信是不可或缺的一部分,而Java作为一门跨平台的编程语言,提供了丰富的网络编程接口。本文将深入探讨使用Java进行网络通讯报文监听的关键技术——jpcap库,以及如何...

    JAVA抓包工具jpcap,包含32位和64位

    Java抓包工具jpcap是Java平台上的网络数据包捕获库,它允许开发者在Java应用程序中实现网络监控和分析功能。jpcap提供了一套API接口,使得开发者能够轻松地处理网络数据包,包括捕获、过滤、解析以及网络协议分析等...

    jpcap.jar包和配套的jpcap.dll

    《jpcap.jar与jpcap.dll:网络数据包捕获与分析的利器》 在IT行业中,网络数据包的捕获与分析是一项至关重要的任务,对于网络安全、故障排查、性能优化等领域都有着广泛的应用。jpcap.jar和jpcap.dll就是这样的工具...

    jpcap.jar jpcap.dll 32 64

    标题中的"jpcap.jar jpcap.dll 32 64"指的是Jpcap库的相关文件,包括Java的jar包和Windows平台下的动态链接库(dll)文件,分别适用于32位和64位操作系统。Jpcap是一个用于网络数据包捕获和分析的开源库,它为Java...

    java下进行抓包使用的jpcap.dll和jpcap.rar资源

    在Java环境下,一个常用的库是Jpcap,它为开发者提供了在Java程序中捕获和分析网络流量的能力。本文将详细探讨Jpcap库及其在Windows 10 64位系统下的使用方法。 Jpcap是一个开源的Java库,由Duke University开发,...

    jpcap.jar和jpcap.dll2积分下载

    《jpcap.jar和jpcap.dll:Java网络封包捕获库的解析与应用》 在计算机网络中,封包捕获(Packet Capture)是一项关键的技术,它允许开发者或网络管理员监控网络流量,分析数据传输,排查网络问题。本文将深入探讨...

    win10 下的 64位 jpcap开发包 jpcap64位

    《深入解析Win10下64位Jpcap开发包》 Jpcap,全称为Java Packet Capture,是一个用于Java平台的网络数据包捕获和分析的库。它为开发者提供了一个强大的工具集,用于在应用程序中实现网络监控、数据分析和网络测试等...

    Jpcap-0.7_java

    Jpcap是用于捕获和发送网络数据包的Java库。 用Jpcap,你可以开发应用程序捕获数据包从一个网络接口和可视化/分析他们在java。您还可以开发Java应用程序通过网络接口发送任意数据包。 Jpcap已在微软视窗(98/2000/...

Global site tag (gtag.js) - Google Analytics