特定のパケットをキャプチャすると、同じ ping を使用して同じことを再現できません。(たとえば、プロジェクトを実行して cmd "ping somethingthatdoesntwork.comm" を実行すると、結果:ページに到達できませんでした。2 回目に同じ ping を実行しても何も起こりません。
public class Pcap4jLoop {
public static void main(String[] args)
throws PcapNativeException, IOException, NotOpenException, InterruptedException {
String filter = null;
if (args.length != 0) {
filter = args[0];
}
PcapNetworkInterface nif = new NifSelector().selectNetworkInterface();
if (nif == null) {
System.exit(1);
}
final PcapHandle handle = nif.openLive(65536, PromiscuousMode.NONPROMISCUOUS, 10);
PacketListener listener = new PacketListener() {
public void gotPacket(PcapPacket packet) {
printPacket(packet, handle);
}
};
while (true) {
handle.loop(1, listener);
Thread.sleep(10);
}
}
private static void printPacket(Packet packet, PcapHandle ph) {
StringBuilder sb = new StringBuilder();
if (packet != null)
if (packet.toString().contains("Question") && packet.toString().contains("Authority")) {
System.out.println(packet.toString().split("DNS Header")[1].split("QNAME: ")[1].split("QTYPE")[0]);
if (packet.toString().contains("RCODE: 3")) {
System.out.println("Couldn't reach this page");
}
System.out.println("_______________________________________");
}
}
}