您的位置:首页 > 编程语言 > PHP开发

Jnetpcap 官方案例(3)- 从离线文件捕获数据包

2016-10-27 12:21 447 查看
原文地址

从离线文件中抓取数据包

离线文件,可以使用wireshark抓取并存为.pcap格式的文件

public class ClassicPcapExampleOfflineCapture {

/**
* Main startup method
*
* @param args
*          ignored
*/
public static void main(String[] args) {
/***************************************************************************
* 首先创建一个用来表示错误信息的字符串,和文件名字符串
**************************************************************************/
final StringBuilder errbuf = new StringBuilder(); // For any error msgs
final String file = "tests/test-l2tp.pcap";

System.out.printf("Opening file for reading: %s%n", file);

/***************************************************************************
* 用openOffline()方法打开选中的文件
**************************************************************************/
Pcap pcap = Pcap.openOffline(file, errbuf);

if (pcap == null) {
System.err.printf("Error while opening device for capture: "
+ errbuf.toString());
return;
}

/***************************************************************************
* 创建用来接收数据包handler
**************************************************************************/
PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {

public void nextPacket(PcapPacket packet, String user) {

System.out.printf("Received at %s caplen=%-4d len=%-4d %s\n",
new Date(packet.getCaptureHeader().timestampInMillis()),
packet.getCaptureHeader().caplen(), // Length actually captured
packet.getCaptureHeader().wirelen(), // Original length
user // User supplied object
);
}
};

/***************************************************************************
* 抓取10个数据包
**************************************************************************/
try {
pcap.loop(10, jpacketHandler, "jNetPcap rocks!");
} finally {
/***************************************************************************
* 最后要关闭pcap
**************************************************************************/
pcap.close();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: