在Java中用Jpcap捕获网络包
作者:渠上明月 提交日期:2005-12-23 13:40:00
如果你想捕获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
...
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
Java 项目,包含:项目源码、数据库脚本、部署说明等,该项目可以作为课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 一. 技术组成 前端:Java 开发环境:IDEA /Ecplise 数据库:MySql (如果有的话) 二. 部署说明 1. Java,用IDEA 或者 Ecplise 即可 2. 数据库可视化软件,推荐使用它 Navicat,MySql 建议使用 5.7 版本
资源推荐
资源详情
资源评论
收起资源包目录
Java 项目-java的JAVA局域网监听软件的设计与开发.zip (629个子文件)
Jpcap.aps 17KB
JDCaptureDialog.java.bak~1~ 5KB
build.bat 82B
build.bat 82B
build_javadoc.bat 51B
build_javadoc.bat 51B
JSniffer.bat 23B
Jpcap.c 21KB
JpcapSender.c 5KB
packet_ipv6.c 5KB
packet_icmp.c 4KB
packet_tcp.c 4KB
packet_ip.c 3KB
Jpcap_ipaddr.c 2KB
JpcapWriter.c 2KB
packet_udp.c 2KB
packet_datalink.c 2KB
packet_arp.c 1KB
CHANGES 1KB
JDFrame.class 12KB
JDFrame.class 12KB
JDCaptor.class 7KB
JDCaptor.class 7KB
TableSorter.class 7KB
TableSorter.class 7KB
JDTablePane.class 6KB
JDTablePane.class 6KB
JDCaptureDialog.class 6KB
JDCaptureDialog.class 6KB
JSourceDialog.class 5KB
JSourceDialog.class 5KB
LineGraph.class 4KB
LineGraph.class 4KB
JDCumlativeStatFrame.class 4KB
JDCumlativeStatFrame.class 4KB
JDTable.class 4KB
JDTable.class 4KB
IPPacket.class 4KB
IPAddress.class 4KB
ICMPPacket.class 4KB
JDDetailTree.class 4KB
JDDetailTree.class 4KB
JDTableTree.class 4KB
JDTableTree.class 4KB
IPv4Analyzer.class 4KB
IPv4Analyzer.class 4KB
ICMPAnalyzer.class 3KB
ICMPAnalyzer.class 3KB
ICMPPacket.class 3KB
JDContinuousStatFrame.class 3KB
JDContinuousStatFrame.class 3KB
ARPPacket.class 3KB
ARPAnalyzer.class 3KB
ARPAnalyzer.class 3KB
IPAddress.class 3KB
ApplicationProtocolStat.class 3KB
ApplicationProtocolStat.class 3KB
TransportProtocolStat.class 3KB
TransportProtocolStat.class 3KB
IPPacket.class 3KB
IPv6Analyzer.class 3KB
IPv6Analyzer.class 3KB
LineGraph$GraphPane.class 3KB
LineGraph$GraphPane.class 3KB
NetworkProtocolStat.class 3KB
NetworkProtocolStat.class 3KB
TCPAnalyzer.class 3KB
TCPAnalyzer.class 3KB
ARPPacket.class 3KB
JDTableRenderer.class 3KB
JDTableRenderer.class 3KB
HTTPAnalyzer.class 2KB
HTTPAnalyzer.class 2KB
JSniffer.class 2KB
JSniffer.class 2KB
LineGraph$LabelPane.class 2KB
LineGraph$LabelPane.class 2KB
PieGraph.class 2KB
PieGraph.class 2KB
TCPPacket.class 2KB
JDTable$JDTableModel.class 2KB
JDTable$JDTableModel.class 2KB
EthernetAnalyzer.class 2KB
EthernetAnalyzer.class 2KB
JDCumlativeStatFrame$TableModel.class 2KB
JDCumlativeStatFrame$TableModel.class 2KB
UDPAnalyzer.class 2KB
UDPAnalyzer.class 2KB
TableMap.class 2KB
TableMap.class 2KB
PacketAnalyzer.class 2KB
PacketAnalyzer.class 2KB
Jpcap.class 2KB
Jpcap.class 2KB
IPv6Option.class 2KB
EthernetPacket.class 2KB
JDPacketAnalyzerLoader.class 2KB
JDPacketAnalyzerLoader.class 2KB
JDCaptor$2.class 2KB
JDCaptor$2.class 2KB
共 629 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
IT徐师兄
- 粉丝: 2375
- 资源: 2862
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功