2 releases
Uses old Rust 2015
0.8.1 | Jan 21, 2025 |
---|---|
0.8.0 | Jan 21, 2025 |
#1691 in Network programming
204 downloads per month
51KB
1.5K
SLoC
netstat-esr
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.
Example
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);
}
}
Details
- 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. Pid lookup is not ready yet!
License
Licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
Contribution
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.
Dependencies
~85–460KB
~11K SLoC