#套接字 #网络 #信息 #跨平台 #底层 #检索

netstat2

跨平台库,用于检索网络套接字信息

4个版本

0.9.1 2020年11月18日
0.9.0 2020年7月23日
0.8.1 2020年2月9日
0.8.0 2020年2月9日

746操作系统 中排名

Download history 1347/week @ 2024-03-14 1281/week @ 2024-03-21 1551/week @ 2024-03-28 1315/week @ 2024-04-04 1614/week @ 2024-04-11 1782/week @ 2024-04-18 1755/week @ 2024-04-25 1500/week @ 2024-05-02 1684/week @ 2024-05-09 1769/week @ 2024-05-16 1305/week @ 2024-05-23 1320/week @ 2024-05-30 1171/week @ 2024-06-06 1746/week @ 2024-06-13 1628/week @ 2024-06-20 1255/week @ 2024-06-27

每月下载量 6,000
用于 12 crates

MIT/Apache

1MB
27K SLoC

netstat2

Latest version Documentation License

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

# Cargo.toml
[dependencies]
netstat2 = "0.9"

这是基于 ivxvmnetstat crate 的分支。

示例

use netstat2::{get_sockets_info, AddressFamilyFlags, ProtocolFlags, ProtocolSocketInfo};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let af_flags = AddressFamilyFlags::IPV4 | AddressFamilyFlags::IPV6;
    let proto_flags = ProtocolFlags::TCP | ProtocolFlags::UDP;
    let sockets_info = get_sockets_info(af_flags, proto_flags)?;
    
    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
            ),
        }
    }

    Ok(())
}

详细信息

许可证

根据以下许可证之一授权

贡献

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

依赖关系

~0.4–1MB
~23K SLoC