1 个不稳定版本
0.5.0 | 2024 年 8 月 3 日 |
---|
在 网络编程 中排名 #698
每月下载量 130 次
57KB
1K SLoC
natpmp-ng
这是对 natpmp 的维护版本,用于 Ten Forward。
Rust 语言实现的 NAT-PMP 客户端库,是 c 库 libnatpmp(https://github.com/miniupnp/libnatpmp) 的 Rust 版本。
注意: src/getgateway.h
和 src/getgateway.c
来自 https://github.com/miniupnp/libnatpmp .
版本
版本 0.2.x 支持 Rust 2018 版本。
版本 0.3.x+ 支持 tokio 和 async-std。
示例
使用系统默认网关创建 natpmp 对象
use natpmp_ng::*
let n = Natpmp::new()?
或指定网关
use std::str::FromStr;
use natpmp_ng::*;
let n = Natpmp::new("192.168.0.1").parse.unwrap())?
要确定外部地址,发送公共地址请求
n.send_public_address_request()?;
要添加端口映射,发送端口映射请求
n.send_port_mapping_request(Protocol::UDP, 4020, 4020, 30)?;
然后几毫秒后读取响应
use std::thread;
use std::time::Duration;
thread::sleep(Duration::from_millis(250));
let response = n.read_response_or_retry()?;
检查响应类型和结果
match response {
Response::Gateway(gr) => {}
Response::UDP(ur) => {}
Response::TCP(tr) => {}
}
异步
在 Cargo.toml 中启用功能 tokio
或 async-std
(默认功能 tokio
)。
[dependencies]
natpmp_ng = { version = "0.5", features = ["tokio"] }
或
[dependencies]
natpmp_ng = { version = "0.5", features = ["async-std"] }
许可证
MIT
依赖项
~3–13MB
~162K SLoC