Crate netstat2

Source
Expand description

Cross-platform library to retrieve network sockets information. Tries 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.

§Example

use netstat2::*;

let af_flags = AddressFamilyFlags::IPV4 | AddressFamilyFlags::IPV6;
let proto_flags = ProtocolFlags::TCP | ProtocolFlags::UDP;
let sockets_info = get_sockets_info(af_flags, 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
        ),
    }
}

Modules§

error

Structs§

AddressFamilyFlags
Set of address families.
ProtocolFlags
Set of protocols.
SocketInfo
General socket information.
TcpSocketInfo
TCP-specific socket information.
UdpSocketInfo
UDP-specific socket information.

Enums§

ProtocolSocketInfo
Protocol-specific socket information.
TcpState
State of TCP connection.

Functions§

get_sockets_info
Retrieve sockets information as a vector. Short-circuits on any error along the way.
iterate_sockets_info
Iterate through sockets information.
iterate_sockets_info_without_pids
Iterate through sockets information without attaching PID.