1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年9月8日

#33 in #safe-network

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

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