I/O Multiplexing
Capturing on multiple interfaces with single thread.
Minimum version: 1.1.x or above.
public static void main(String[] _args) throws Exception {
var service = Service.Creator.create("PcapService");
var dev1 = service.interfaces();
var dev2 = dev1.next();
var pcap1 = service.live(dev1, new DefaultLiveOptions());
var pcap2 = service.live(dev2, new DefaultLiveOptions());
PacketHandler<Pcap> handler =
(args, header, buffer) -> {
System.out.println("Args : " + args);
System.out.println("Header : " + header);
System.out.println("Packet : " + buffer);
};
var selector = service.selector();
selector.register(pcap1);
selector.register(pcap2);
var timeout = new DefaultTimeout(1000000L, Timeout.Precision.MICRO);
try {
var selectables = selector.select(timeout);
var iterator = selectables.iterator();
while (iterator.hasNext()) {
var next = iterator.next();
var pcap = (Pcap) next;
try {
pcap.dispatch(1, handler, pcap);
} catch (BreakException e) {
System.err.println(e);
}
}
} catch (TimeoutException e) {
System.err.println(e);
}
selector.close();
pcap1.close();
pcap2.close();
}Since 1.4.0
Soon
Last updated
Was this helpful?