pack2

Crates.iopack2
lib.rspack2
version0.1.3
sourcesrc
created_at2022-05-31 09:44:14.851257
updated_at2022-05-31 10:05:45.540802
descriptionwindows ipv4 packet sniffing
homepage
repositoryhttps://github.com/chronicl/pack2
max_upload_size
id597387
size26,897
Lennard (chronicl)

documentation

https://docs.rs/pack2

README

packet sniffing for windows

API

This crate provides one function recv_all_socket which creates a socket2::Socket that receives all incoming and outgoing ipv4 packets.

Example

use pack2::recv_all_socket;
use std::mem::MaybeUninit;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let socket = recv_all_socket()?;

    let mut buf = vec![0u8; 65535];
    loop {
        // This is safe as described in the documentation of socket2::Socket::recv_from
        let buf_maybe = unsafe { &mut *(&mut buf[..] as *mut [u8] as *mut [MaybeUninit<u8>]) };
        let (read, addr) = socket.recv_from(buf_maybe)?;
        println!("received {} bytes from {:?}", read, addr);
    }
}
Commit count: 10

cargo fmt