3 个不稳定版本
使用旧的 Rust 2015
0.7.0 | 2018年10月27日 |
---|---|
0.6.2 | 2018年10月12日 |
0.6.1 | 2018年10月11日 |
0.6.0 |
|
#21 in #retrieve
192 每月下载量
用于 lopxy
64KB
1.5K SLoC
netstat
跨平台库,用于检索网络套接字信息。旨在通过使用低级别的操作系统 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 License,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
贡献
除非你明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证定义,应如上所述双重许可,不附加任何额外的条款或条件。
依赖项
~145KB