#windows #routes #manager #gateway #high-level #interface

winroute

这个crate是一个用于操作和观察Windows路由表的界面级工具

3个不稳定版本

0.2.0 2023年2月14日
0.1.2 2023年2月7日
0.1.1 2023年1月9日
0.1.0 2023年1月9日

#1127编码

Download history 29/week @ 2024-03-15 1/week @ 2024-03-22 12/week @ 2024-03-29 5/week @ 2024-04-05 2/week @ 2024-04-12 25/week @ 2024-04-19 36/week @ 2024-04-26 7/week @ 2024-05-24 9/week @ 2024-05-31 8/week @ 2024-06-07 27/week @ 2024-06-14 72/week @ 2024-06-21 4/week @ 2024-06-28

每月113次下载

Apache-2.0

33KB
588

WinRoute

这个crate是一个用于操作和观察Windows路由表的界面级工具

示例

管理路由表

let manager = RouteManager::new()?;
let new_route = Route::new("223.6.6.6".parse().unwrap(), 32).metric(1);
// add route
if let Err(e) = manager.add_route(&new_route) {
    eprintln!("{e}");
}
// delete route
if let Err(e) = manager.delete_route(&new_route) {
    eprintln!("{e}");
}

监听表更改事件

let manager = RouteManager::new()?;
let recvier = manager.subscribe_route_change();
let ma = Arc::new(manager);
let mb = ma.clone();

// start a thread to driven event loop, also can use async task to run this
std::thread::spawn(move || loop {
    ma.poll().unwrap();
});

// create a new route
let new_route = Route::new("223.6.6.6".parse().unwrap(), 32);
// add route to system
mb.add_route(&new_route)?;

loop {
    // listeing on route change event
    let event = recvier.recv().unwrap();
    println!("{:?}", event);
}

功能

  • serializable: 默认启用此功能,实现了serdeSerializeDeserialize,此功能需要添加对serde的额外依赖

依赖

~310–690KB