use std::collections::HashSet;
use std::thread;
use std::time::Duration;
use default_net::Interface;
use cross_socket::option::PacketCaptureOptions;
use cross_socket::listener::Listner;
fn main(){
let default_interface: Interface =
default_net::get_default_interface().expect("Failed to get default interface information");
let capture_options: PacketCaptureOptions = PacketCaptureOptions {
interface_index: default_interface.index,
interface_name: default_interface.name,
src_ips: HashSet::new(),
dst_ips: HashSet::new(),
src_ports: HashSet::new(),
dst_ports: HashSet::new(),
ether_types: HashSet::new(),
ip_protocols: HashSet::new(),
duration: Duration::from_secs(30),
promiscuous: false,
store: false,
store_limit: 0,
receive_undefined: true,
};
let listener: Listner = Listner::new(capture_options);
let rx = listener.get_receiver();
let handle = thread::spawn(move || listener.start());
while let Ok(msg) = rx.lock().unwrap().recv() {
println!("{:?}", msg);
}
let _result = handle.join().unwrap();
}