gpt4 book ai didi

java - 如何使用参数为 Pcap.LOOP_INFINITE 的 pcap.loop() 将捕获的数据包打印到 JTextArea 中?

转载 作者:行者123 更新时间:2023-12-01 14:49:45 24 4
gpt4 key购买 nike

我对JNetPcap很陌生,我仍在寻找它的方法,我正在尝试为我的项目构建一个数据包嗅探器,最近我正在尝试打印输出数据包信息通过附加我正在使用的 pcap.loop() 中的信息到 JTextArea 中,但是当我使用特定整数值设置第一个参数时,假设 5 pcap.loop() 输出已捕获的 5 个数据包,现在我想要的是连续捕获并输出数据包,直到按下按钮停止。下面的语法显示了数据包处理程序。

PcapPacketHandler<String> jpacketHandler = new PcapPacketHandler<String>() {  

public void nextPacket(PcapPacket packet, String user) {

// System.out.printf is included to check if my code works in a non GUI fashion
System.out.printf("Received packet 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
);
Date a = new Date(packet.getCaptureHeader().timestampInMillis());
int b = packet.getCaptureHeader().caplen();
int c = packet.getCaptureHeader().wirelen();
String d = user;

pcktTextArea.append("Received packet at " + a + " caplen=" + Integer.toString(b) + " len=" + Integer.toString(b) + user + "\n" );
pcktTextArea.setForeground(Color.red);
pcktTextArea.setFont(font);
}
};

现在这里是我的 pcktTextArea,我使用 append 打印出文本区域中的信息:

   pcktTextArea.append("Received packet at " + a + " caplen=" + Integer.toString(b) + " len=" + Integer.toString(b) + user + "\n" );
pcktTextArea.setForeground(Color.red);
pcktTextArea.setFont(font);

最后是我遇到问题的 Pcap.loop ,如果我用 5 替换 i ,它确实会打印在 JTextArea 中,但是当我把Pcap.LOOP_INFINTE 它仅通过控制台打印信息,但不在 GUI JTextArea 中打印信息:

   int i = Pcap.LOOP_INFINITE;

pcap.loop(i , jpacketHandler, " ");

/***************************************************************************
* Last thing to do is close the pcap handle
**************************************************************************/
pcap.close();

是不是因为必须先完成循环,然后才能在 Textarea 中打印信息?

最佳答案

我假设您在线程中运行代码。使用SwingUtilities.invokeAndWait 调用 pcktTextArea.append() 代码

关于java - 如何使用参数为 Pcap.LOOP_INFINITE 的 pcap.loop() 将捕获的数据包打印到 JTextArea 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15000485/

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