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网络编程

Download history 422/week @ 2024-04-11 329/week @ 2024-04-18 246/week @ 2024-04-25 112/week @ 2024-05-02 428/week @ 2024-05-09 316/week @ 2024-05-16 244/week @ 2024-05-23 313/week @ 2024-05-30 434/week @ 2024-06-06 365/week @ 2024-06-13 400/week @ 2024-06-20 198/week @ 2024-06-27 226/week @ 2024-07-04 175/week @ 2024-07-11 220/week @ 2024-07-18 296/week @ 2024-07-25

每月 950 次下载
用于 rs-matter

MIT/Apache

205KB
6K SLoC

Astro DNS-SD

Build Status License Cargo Documentation

围绕 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-2.0 许可证的定义,应按照上述方式双重许可,不附加任何其他条款或条件。

依赖项

~0.3–1.1MB
~21K SLoC