netstat2

Latest version Documentation License

Cross-platform library to retrieve network sockets information. Aims to be optimal by using low-level OS APIs instead of command line utilities. Provides unified interface and returns data structures which may have additional fields depending on platform.

```toml

Cargo.toml

[dependencies] netstat2 = "0.9" ```

This is a fork based on the netstat crate by ivxvm.

Example

```rust use netstat2::{getsocketsinfo, AddressFamilyFlags, ProtocolFlags, ProtocolSocketInfo};

fn main() -> Result<(), Box> { let afflags = AddressFamilyFlags::IPV4 | AddressFamilyFlags::IPV6; let protoflags = ProtocolFlags::TCP | ProtocolFlags::UDP; let socketsinfo = getsocketsinfo(afflags, proto_flags)?;

for si in sockets_info {
    match si.protocol_socket_info {
        ProtocolSocketInfo::Tcp(tcp_si) => println!(
            "TCP {}:{} -> {}:{} {:?} - {}",
            tcp_si.local_addr,
            tcp_si.local_port,
            tcp_si.remote_addr,
            tcp_si.remote_port,
            si.associated_pids,
            tcp_si.state
        ),
        ProtocolSocketInfo::Udp(udp_si) => println!(
            "UDP {}:{} -> *:* {:?}",
            udp_si.local_addr, udp_si.local_port, si.associated_pids
        ),
    }
}

Ok(())

} ```

Details

License

Licensed under either of:

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.