3 个不稳定版本

使用旧的 Rust 2015

0.7.0 2018年10月27日
0.6.2 2018年10月12日
0.6.1 2018年10月11日
0.6.0 2018年10月11日

#21 in #retrieve

Download history 162/week @ 2024-03-11 109/week @ 2024-03-18 116/week @ 2024-03-25 182/week @ 2024-04-01 121/week @ 2024-04-08 147/week @ 2024-04-15 76/week @ 2024-04-22 67/week @ 2024-04-29 63/week @ 2024-05-06 117/week @ 2024-05-13 137/week @ 2024-05-20 82/week @ 2024-05-27 41/week @ 2024-06-03 53/week @ 2024-06-10 53/week @ 2024-06-17 38/week @ 2024-06-24

192 每月下载量
用于 lopxy

MIT/Apache

64KB
1.5K SLoC

netstat

Latest version Documentation License

跨平台库,用于检索网络套接字信息。旨在通过使用低级别的操作系统 API 而不是命令行实用程序来实现最佳性能。提供统一的接口,并返回可能根据平台具有额外字段的数据结构。

示例

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
            ),
        }
    }
}

详细信息

  • 在 Windows 上,库使用 GetExtendedTcpTable & GetExtendedUdpTable (iphlpapi)
  • 在 Linux 上,它使用 NETLINK_INET_DIAG 协议,并通过遍历 procfs 来执行 pid 查找
  • 在 OS X 上,它应理想地使用 sysctls,但当前仅解析 netstat 输出(适当的实现主要在 src/integrations/osx 文件夹下的未使用模块中完成,它等待有 mac 的贡献者完成它)

许可证

根据以下任一项许可

贡献

除非你明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证定义,应如上所述双重许可,不附加任何额外的条款或条件。

依赖项

~145KB