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§
Structs§
- Address
Family Flags - Set of address families.
- Protocol
Flags - Set of protocols.
- Socket
Info - General socket information.
- TcpSocket
Info - TCP-specific socket information.
- UdpSocket
Info - UDP-specific socket information.
Enums§
- Protocol
Socket Info - 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.