gpt4 book ai didi

network-programming - 如何在 Rust 中获取 MAC 地址?

转载 作者:行者123 更新时间:2023-11-29 07:54:44 31 4
gpt4 key购买 nike

如何获取第一 block 网卡的hwaddr

以及如何列出所有接口(interface)?

最佳答案

在类 Unix 操作系统上,/sys/class/net/ 包含您机器上可用接口(interface)的符号链接(symbolic link),接口(interface)的 MAC 地址写在类似 /的文件中系统/类/网络/eth0/地址

在 Windows 上,我猜你必须解析像 ipconfig 这样的外部命令的输出来获取你想要的信息。

演示:

use std::fs;
use std::io::Read;
use std::path::Path;

fn main() {
let net = Path::new("/sys/class/net");
let entry = fs::read_dir(net).expect("Error");
// a bit cubersome :/
let ifaces = entry.filter_map(|p| p.ok())
.map(|p| p.path().file_name().expect("Error").to_os_string())
.filter_map(|s| s.into_string().ok())
.collect::<Vec<String>>();
println!("Available interfaces: {:?}", ifaces);


let iface = net.join(ifaces[0].as_str()).join("address");
let mut f = fs::File::open(iface).expect("Failed");
let mut macaddr = String::new();
f.read_to_string(&mut macaddr).expect("Error");
println!("MAC address: {}", macaddr);
}

关于network-programming - 如何在 Rust 中获取 MAC 地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346575/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com