| Crates.io | netstat-esr |
| lib.rs | netstat-esr |
| version | 0.8.1 |
| created_at | 2025-01-21 23:53:03.851216+00 |
| updated_at | 2025-01-21 23:58:49.179154+00 |
| description | Maintained version of netstat-rs which is a cross-platform library to retrieve network sockets information. |
| homepage | |
| repository | https://github.com/esurharun/netstat-rs |
| max_upload_size | |
| id | 1525932 |
| size | 63,045 |
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 {
println!("Active connection: {}",si);
}
}
On Windows, library uses GetExtendedTcpTable & GetExtendedUdpTable (iphlpapi)
On Linux, it uses NETLINK_INET_DIAG protocol and performs pid lookup by traversing procfs
On OS X, it uses sysctl system calls with "net.inet.tcp.pcblist" header to populate active connections. Got tech details from FreeBSD version of [netstat][https://web.mit.edu/freebsd/head/usr.bin/systat/netstat.c]. Pid lookup is not ready yet!
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.