[][src]Crate netstat2

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. Works on older versions of Windows (like XP and 2003).