gpt4 book ai didi

java - 使用 jpcap 库从网络捕获数据包并保存在数据库中

转载 作者:行者123 更新时间:2023-11-29 08:49:49 27 4
gpt4 key购买 nike

我正在使用 jpcap 库捕获数据包并保存在 Mysql 数据库中。我想分别完成这两个功能。我的程序捕获数据包并保存在数据库中,然后捕获另一个数据包并保存在数据库中。我想要的是一种方法捕获数据包,另一种方法保存在数据库中。保存数据包不会停止捕获以完成该过程。

    public class PacketSniffer {
private static String[] devices;
private static PacketCapture captor;
private static Packet info;
private static final Scanner input = new Scanner(System.in);
private static final String FILTER = "";
private static final int PACKET_COUNT = -1;

public PacketSniffer()
{
captor = new PacketCapture();
int i;
devices = PacketCapture.lookupDevices();

for(i=0; i<devices.length; i++)
{
System.out.println(i+": "+devices[i]); // +devices[i].name
System.out.println();
}
String device = input.nextLine();
captor.open(device, 65535, true, 0);
captor.setFilter(FILTER, true);
captor.addPacketListener(new PacketCapture());
captor.capture(PACKET_COUNT);
}
}

处理捕获数据包的数据包处理程序:

    public class PacketHandler implements PacketListener {

Queue<Packet> queue;

@Override
public void packetArrived(Packet packet)
{
System.out.println(packet);
}

public void savePacket()
{
// Method to save packet in database
}
}

最佳答案

public class PacketCapture implements PacketListener,Runnable {
Queue<Packet> queue = new LinkedList<>();
@Override
public void packetArrived(Packet packet)
{
queue.add(packet);
System.out.println(m_counter++);
}

public void run()
{
while(!(queue.equals(null))){
System.out.println(queue.poll());
}
}
}

在主要方法中

 public static void main(String[] args) {

Thread t1 = new Thread(new PacketSniffer());
Thread t2 = new Thread(new PacketCapture());
t1.start();
t2.start();
}

关于java - 使用 jpcap 库从网络捕获数据包并保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327639/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com