Jnetpcap 官方样例 (1)- 捕获数据包

本文提供了一个使用Jnetpcap库的经典样例,通过展示如何获取网络设备列表并选择接口进行数据包捕获。程序利用packet handler捕获并显示包的基本信息,最后关闭处理器。
摘要由CSDN通过智能技术生成

这个样例是非常经典的libpcap样例,它首先获取到一个网络设备的列表,用简单的ASCLL码菜单表示出来 然后 等待用户选择其中的一个接口。我们选择列表中的第一个接口代替处理输入来简化程序。

然后打开这个用于捕获的接口,使用一个 packet handler(数据包处理器)来循环的抓包。打印出packets的一些简单信息,然后关闭处理器,退出程序。

package org.jnetpcap.examples;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.List;  

// 以下简单的介绍一下我们药要使用的类,具体的用法请查看api文档
import org.jnetpcap.Pcap;  
/**
* Pcap这个类是一个和 libpcap和winpcap 中 pcap_t 结构等同的主要类。它用于提供一个各种
* 库方法到java 的直接映射
* Pcap提供几个静态方法,用来 发现网络接口,随后打开 openlive,openDead,或者 
* openOffline pcap捕获会话。以上都是返回一个 Pcap 对象。这个对象是C语言的pcap_t结构
* java vm 地址空间的支持。任何在Pcap对象上 的 非静态操作,都会转换为使用 JNI api 匹配 
* Libpcap 中 pcap_t C 的方法来完成调用。
* 用了以上提及的3个静态方法,一定要调用 close() 方法来释放 Libpcap 的资源
* 如果 Pcap已经关闭了,但是非静态方法还是调用了,那就会抛出一个 IllegalStateException
*/

import org.jnetpcap.PcapIf;  
/**
* 这个类关联的是本地的 pcap_if_t 结构,把地址模拟为链式的地址结构。只读。
*/

import org.jnetpcap.packet.PcapPacket;  

/**
* 一个pcap 的数据包,但是不能用于创建一个新的数据包,具体的结构解释于代码使用中
*/

import org.jnetpcap.packet.PcapPacketHandler;  

/**
* 一个处理,监听,回调的接口,用于在一个新的packet捕获的时候,获得通知
*/

/** 
 * 以下是这个样例的输出 : 
 * Ps:在ubuntu下的时候,可能会出现一些运行时刻的权限问题,不能获取设备的权限
 *  
 *  Network devices found: 
 *  #0: \Device\NPF_{BC81C4FC-242F-4F1C-9DAD-EA9523CC992D} [Intel(R) PRO/100 VE]  
 *  #1: \Device\NPF_{E048DA7F-D007-4EEF-909D-4238F6344971} [VMware Virtual Ethernet Adapter] 
 *  #2: \Device\NPF_{5B62B373-3EC1-460D-8C71-54AA0BF761C7} [VMware Virtual Ethernet Adapter] 
 *  #3: \Device\NPF_GenericDialupAdapter [Adapter for generic dialup and VPN capture] 
 *  
 *  Choosing 'Intel(R) PRO
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值