1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年9月8日

#33 in #safe-network

Download history • Rust 包仓库 68/week @ 2024-03-14 • Rust 包仓库 65/week @ 2024-03-21 • Rust 包仓库 13/week @ 2024-03-28 • Rust 包仓库 30/week @ 2024-04-04 • Rust 包仓库 25/week @ 2024-04-11 • Rust 包仓库 72/week @ 2024-04-18 • Rust 包仓库 26/week @ 2024-04-25 • Rust 包仓库 2/week @ 2024-05-02 • Rust 包仓库 41/week @ 2024-05-09 • Rust 包仓库 1/week @ 2024-05-16 • Rust 包仓库 5/week @ 2024-05-30 • Rust 包仓库 39/week @ 2024-06-06 • Rust 包仓库 7/week @ 2024-06-13 • Rust 包仓库 44/week @ 2024-06-20 • Rust 包仓库 19/week @ 2024-06-27 • Rust 包仓库

110 每月下载量

MIT 许可证

16KB
159 行代码(不包括注释)

getaddrs 为系统的网络接口数据提供安全接口。

InterfaceAddrs 结构体提供了对系统网络接口数据的访问。您可以选择遍历它,或者消费它并将其转换为 InterfaceMap(一个 HashMap>,便于通过接口名称访问)。

示例

您可以用几行代码访问系统的基本信息。以下程序打印所有已知地址。

use getaddrs::InterfaceAddrs;

let addrs = InterfaceAddrs::query_system()
    .expect("System has no network interfaces.");

for addr in addrs {
    println!("{}: {:?}", addr.name, addr.address);
}

InterfaceFlags 结构体提供了对接口状态的访问。此程序仅打印已开启的接口地址。

use getaddrs::{InterfaceAddrs, if_flags};

let addrs = InterfaceAddrs::query_system()
    .expect("System has no network interfaces.");

for addr in addrs {
    if addr.flags.contains(if_flags::IFF_UP) {
        println!("{}: {:?}", addr.name, addr.address);
    }
}

您可以将 InterfaceAddrs 结构体轻松转换为 HashMap。InterfaceMap 是 HashMap 的别名,便于引用。

use getaddrs::{InterfaceAddrs, InterfaceAddr, InterfaceMap};
use std::collections::HashMap;

let interfaces: InterfaceMap = 
    InterfaceAddrs::query_system()
    .expect("System has no network interfaces.")
    .into(); // Convert to a hash map

// Print all the addresses of the loopback interface
if let Some(addrs) = interfaces.get("lo") {
   println!("Loopback addresses:");
   for addr in addrs {
        println!("\t{:?}", addr);
   }
}

依赖项

~185KB