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 在 操作系统 中排名
每月下载量 6,000
用于 12 crates
1MB
27K SLoC
netstat2
跨平台库,用于检索网络套接字信息。旨在通过使用低级OS API而不是命令行工具来实现最优性能。提供统一的接口,并返回可能根据平台具有额外字段的数据结构。
# Cargo.toml
[dependencies]
netstat2 = "0.9"
这是基于 ivxvm 的 netstat 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(())
}
详细信息
- 在Windows上,此库使用 GetExtendedTcpTable & GetExtendedUdpTable (iphlpapi),并提供使用较旧的 GetTcpTable & GetUdpTable 的选项。
- 在Linux和Android上,它使用 NETLINK_INET_DIAG 协议,并通过遍历
procfs
来执行pid查找。 - 在macOS和iOS上,它使用 proc_pidfdinfo。
许可证
根据以下许可证之一授权
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非您明确声明,否则您有意提交以包含在作品中的任何贡献,根据Apache-2.0许可证的定义,应作为上述双许可,没有额外的条款或条件。
依赖关系
~0.4–1MB
~23K SLoC