使用 JNetPcap 从 pcap 文件捕获数据包的问题

问题描述 投票:0回答:0

我正在使用 JNetPcap 从 Java 中的 pcap 文件中捕获数据包。该代码有时工作正常,但有时它不会捕获任何数据包,即使 pcap 文件充满了数据包。

这是我的代码:

import org.jnetpcap.Pcap;
import org.jnetpcap.packet.PcapPacketHandler;

public class OfflinePcapCapture {
    public static void main(String[] args) {
        String pcapFilePath = "D:/hello/1212.pcap";
        StringBuilder errorBuffer = new StringBuilder();
        Pcap pcap = Pcap.openOffline(pcapFilePath, errorBuffer);
        if (pcap == null) {
            System.err.println("Error opening pcap file: " + errorBuffer);
            return;
        }

        PcapPacketHandler<String> packetHandler = (packet, user) -> System.out.println(packet.toString());

        int packetCount = pcap.loop(-1, packetHandler, "");
        if (packetCount < 0) {
            System.err.println("Error capturing packets: " + pcap.getErr());
        } else {
            System.out.println("Captured " + packetCount + " packets from " + pcapFilePath);
        }
        pcap.close();
    }
}

我尝试删除过滤器表达式以捕获文件中的所有数据包,但这并没有改变任何东西。有时代码会从文件中捕获数据包,有时即使文件中充满了数据包也不会捕获任何数据包。

我注意到的一件事是,有时代码会在第一次尝试时从文件中捕获数据包,而其他时候我必须多次重新运行代码才能获得结果。

对于解决此问题的任何帮助将不胜感激。提前谢谢你!

java networking pcap jnetpcap pcap4j
© www.soinside.com 2019 - 2024. All rights reserved.