13 个版本
0.4.0 | 2022年11月26日 |
---|---|
0.3.3 | 2022年11月26日 |
0.3.2 | 2021年9月3日 |
0.3.1 | 2021年5月21日 |
0.1.15 | 2018年11月29日 |
#850 在 网络编程 中
306 每月下载量
用于 9 个 crate(4 个直接使用)
57KB
1K SLoC
natpmp
natpmp 客户端库,Rust 对 c 库 libnatpmp(https://github.com/miniupnp/libnatpmp)的实现。
注意: 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::*
let n = Natpmp::new()?
或指定网关
use std::str::FromStr;
use natpmp::*;
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 = { version = "0.3", features = ["tokio"] }
或
[dependencies]
natpmp = { version = "0.3", features = ["async-std"] }
许可证
MIT
依赖项
~3–16MB
~177K SLoC