5 个版本
使用旧的 Rust 2015
0.1.5 | 2019 年 11 月 25 日 |
---|---|
0.1.4 | 2019 年 11 月 25 日 |
#4 在 #ssdp
9KB
138 行
使用 Rust 编写的简单而实用的 SSDP 客户端
这是一个小小的个人实验,旨在
- 学习 Rust 的网络(特别是与 UDP 相关的)API
- 实现一个工作且易于使用的 SSDP 客户端
- 更多地了解 SSDP
目前,文档和测试覆盖率相当不足。这将在后续提交中得到解决。
构建
cargo build
发布候选
cargo build --release
运行
本地测试
$ ./target/debug/simple_ssdp_client --help
发布候选
$ ./target/release/simple_ssdp_client --help
示例用法
作为一个应用程序
$ ./target/debug/simple_ssdp_client --server=roku
{"server" : "roku/9.2.0 upnp/1.0 roku/9.2.0", "location: "http://192.168.1.25:8060/"}
显示 SSDP M-Search 有效负载
$ ./target/debug/simple_ssdp_client --print-payload
M-SEARCH * HTTP/1.1
Host: 239.255.255.250:1900
Man: "ssdp:discover"
ST: ssdp:all
MX: 5
作为一个库
Cargo.toml
ssdp = { package = "simple-ssdp-client", version = "0.1.4" }
模块声明
extern crate ssdp;
代码
# optionally if you wanted to use a server response outside of this context
let mut url = String::new();
let print_headers = |response_headers: &ResponseHeaders| {
fn determine_server(abc: &ArgMatches) -> String {
match abc.value_of("server_pattern") {
Some(server) => { return String::from(server) }
None => { return String::new() }
};
}
let resolved_server = determine_server( &args());
if response_headers.server.contains(resolved_server.as_str()) {
println!("{{\"server\" : \"{}\", \"location: \"{}\"}}", response_headers.server, response_headers.location);
url = response_headers.location.clone(); # see above
exit(0);
}
};
ssdp::listen( print_headers)
依赖项
~750KB