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.
Add this to your Cargo.toml
:
toml
[dependencies]
netstat = "0.6"
Example program:
```rust extern crate netstat;
use netstat::*;
fn main() { let afflags = AddressFamilyFlags::IPV4 | AddressFamilyFlags::IPV6; let protoflags = ProtocolFlags::TCP | ProtocolFlags::UDP; let socketsinfo = getsocketsinfo(afflags, protoflags).unwrap(); for si in socketsinfo { match si.protocolsocketinfo { ProtocolSocketInfo::Tcp(tcpsi) => println!( "TCP {}:{} -> {}:{} {:?} - {}", tcpsi.localaddr, tcpsi.localport, tcpsi.remoteaddr, tcpsi.remoteport, si.associatedpids, tcpsi.state ), ProtocolSocketInfo::Udp(udpsi) => println!( "UDP {}:{} -> : {:?}", udpsi.localaddr, udpsi.localport, si.associated_pids ), } } } ```
/proc/../fd/..
.src/integrations/osx
folder, it waits for contributors with mac to finish it).