Crates.io | netstat |
lib.rs | netstat |
version | 0.7.0 |
source | src |
created_at | 2018-10-11 16:19:10.602369 |
updated_at | 2018-10-27 16:16:38.628183 |
description | Cross-platform library to retrieve network sockets information. |
homepage | |
repository | https://github.com/ivxvm/netstat-rs |
max_upload_size | |
id | 89274 |
size | 76,151 |
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.
extern crate netstat;
use netstat::*;
fn main() {
let af_flags = AddressFamilyFlags::IPV4 | AddressFamilyFlags::IPV6;
let proto_flags = ProtocolFlags::TCP | ProtocolFlags::UDP;
let sockets_info = get_sockets_info(af_flags, proto_flags).unwrap();
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
),
}
}
}
procfs
sysctls
, but currently just parses netstat output (proper impletemention is mostly done in unused modules under src/integrations/osx
folder, it waits for contributors with mac to finish it)Licensed under either of:
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.