2 个版本
0.0.2 | 2019 年 9 月 27 日 |
---|---|
0.0.1 | 2019 年 9 月 27 日 |
#11 在 #receive
120 每月下载量
105KB
2K SLoC
nl80211
这个包旨在提供对 nl80211 的低级别访问。
这个包受到由 @mdlayher 制作的 go wifi 包的启发。
⚠️ 此库只能在 Linux 上运行。
⚠️ 此包仍在开发中。
内置函数
此包提供了一些内置函数来获取无线网络和接口的信息和指标。
获取接口信息
extern crate nl80211;
extern crate neli;
use nl80211::Socket;
use nl80211::PrettyFormat;
fn main() -> Result<(), neli::err::NlError> {
let interfaces = Socket::connect()?.get_interfaces_info()?;
for interface in interfaces {
println!("{:#?}", interface);
// Interface {
// index: Some([3, 0, 0, 0]),
// ssid: Some([101, 100, 117, 114, 111, 97, 109]),
// mac: Some([255, 255, 255, 255, 255, 255]),
// name: Some([119, 108, 112, 53, 115, 48]),
// frequency: Some([108, 9, 0, 0]),
// channel: Some([1, 0, 0, 0]),
// power: Some([164, 6, 0, 0]),
// phy: Some([0, 0, 0, 0]),
// device: Some([1, 0, 0, 0, 0, 0, 0, 0])
// }
println!("{}", interface.pretty_format());
// essid : eduroam
// mac : FF:FF:FF:FF:FF:FF
// interface : wlp5s0
// frequency : 2.412 Ghz
// channel : 1
// power : 17 dBm
// phy : 0
// device : 1
}
Ok(())
}
获取接入点信息和指标
extern crate nl80211;
extern crate neli;
use nl80211::Socket;
use nl80211::PrettyFormat;
fn main() -> Result<(), neli::err::NlError> {
let interfaces = Socket::connect()?.get_interfaces_info()?;
for interface in interfaces {
let station = interface.get_station_info();
println!("{}", station?.pretty_format());
// bssid : FF:FF:FF:FF:FF:FF
// connected time : 35.816666 minutes
// beacon loss : 0
// signal : -60 dBm
// average signal : -61 dBm
// rx packets : 148983
// tx packets : 46335
// rx bitrate : 60 Mb/s
// tx bitrate : 140 Mb/s
// tx retries : 12578
// tx failed : 2
}
Ok(())
}
待办事项
- 实现自定义错误
- 添加更多内置函数
- 改进文档
依赖关系
~410KB