8 个版本
0.3.4 | 2024 年 3 月 28 日 |
---|---|
0.3.2 | 2022 年 10 月 10 日 |
0.3.1 | 2022 年 9 月 15 日 |
0.3.0 | 2021 年 8 月 6 日 |
0.1.0 | 2020 年 4 月 27 日 |
#178 在 网络编程
每月 950 次下载
用于 rs-matter
205KB
6K SLoC
Astro DNS-SD
围绕 dns-sd(Bonjour、mDNS、Zeroconf DNS) API 的最小但友好的安全包装。
功能
完整
- 服务注册
- 支持通过 HashMap 进行服务注册的 TXTRecord
- 服务浏览
待办事项
- 记录创建
- 名称解析
- 端口映射
- 测试
- 文档
构建要求
astro-dnssd
需要 Bonjour SDK (截至 0.3 版本在 Windows 上是可选的,请参阅 win-bonjour 功能标志)
- Windows: 在此处下载 SDK 这里
- Linux: 为您选择的发行版安装
avahi-compat-libdns_sd
。
技术背景
此 网站 提供了 DNS-SD 协议的良好概述。
示例
use astro_dnssd::DNSServiceBuilder;
use env_logger::Env;
use std::thread::sleep;
use std::time::Duration;
fn main() {
env_logger::from_env(Env::default().default_filter_or("trace")).init();
println!("Registering service...");
let service = DNSServiceBuilder::new("_http._tcp", 8080)
.with_key_value("status".into(), "open".into())
.register();
{
match service {
Ok(service) => {
println!("Registered... waiting 20s");
sleep(Duration::from_secs(20));
println!("Dropping... {:?}", service);
}
Err(e) => {
println!("Error registering: {:?}", e);
}
}
}
log::info!("Drop should have happened");
sleep(Duration::from_secs(5));
}
许可
许可协议为
- Apache License,版本 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确说明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,应按照上述方式双重许可,不附加任何其他条款或条件。
依赖项
~0.3–1.1MB
~21K SLoC