4个版本 (2个破坏性版本)
0.3.0 | 2023年9月23日 |
---|---|
0.2.0 | 2023年7月21日 |
0.1.1 | 2022年6月9日 |
0.1.0 | 2022年6月8日 |
在macOS 和 iOS APIs中排名第83
每月下载量48
38KB
847 行代码(不含注释)
vmnet
Rust对Apple的vmnet.framework
的绑定。
安装
将以下内容添加到您的Cargo.toml
[dependencies]
vmnet = "0"
使用
确保您的软件具有com.apple.vm.networking
权限或以提升权限运行。
启动NAT接口并接收一些目标为它的数据包
let shared_mode = Shared {
subnet_options: None,
..Default::default()
};
let mut iface = Interface::new(Mode::Shared(shared_mode), Options::default()).unwrap();
let (tx, rx) = sync::mpsc::sync_channel(0);
iface.set_event_callback(Events::PACKETS_AVAILABLE, move |events, params| {
if let Some(Parameter::EstimatedPacketsAvailable(pkts)) = params.get(ParameterKind::EstimatedPacketsAvailable) {
tx.send(pkts);
}
}).unwrap();
let pkts = rx.recv().unwrap();
println!("receiving {} packets...", pkts);
for _ in 0..pkts {
let mut buf: [u8; 1514] = [0; 1514];
println!("{:?}", iface.read(&mut buf));
}
drop(rx);
iface.finalize().unwrap();
怪癖和缺失的功能
依赖关系
~2.5MB
~53K SLoC