4 个版本
0.2.2 | 2021 年 9 月 15 日 |
---|---|
0.2.1 | 2021 年 9 月 7 日 |
0.2.0 | 2021 年 9 月 6 日 |
0.1.0 | 2021 年 8 月 27 日 |
#160 in macOS 和 iOS API
在 2 crates 中使用
79KB
1.5K SLoC
async-zeroconf
async-zeroconf
是一个用于注册 ZeroConf 服务的 crate,它通过 Tokio 而不是同步事件循环来保持服务存活。
示例
发布服务
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
// Create a service description
let service = async_zeroconf::Service::new("Server", "_http._tcp", 80);
// Publish the service
let service_ref = service.publish().await?;
// Service kept alive until service_ref dropped
Ok(())
}
查找服务
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
let mut browser = async_zeroconf::ServiceBrowserBuilder::new("_http._tcp");
let mut services = browser
.timeout(tokio::time::Duration::from_secs(2))
.browse()?;
while let Some(Ok(v)) = services.recv().await {
println!("Service = {}", v);
}
Ok(())
}
解析服务
#[tokio::main]
async fn main() -> Result<(), async_zeroconf::ZeroconfError> {
let mut browser = async_zeroconf::ServiceBrowserBuilder::new("_http._tcp");
let mut services = browser
.timeout(tokio::time::Duration::from_secs(2))
.browse()?;
while let Some(Ok(v)) = services.recv().await {
let resolved_service = async_zeroconf::ServiceResolver::r(&v).await?;
println!("Service = {}", resolved_service);
}
Ok(())
}
变更日志
- 0.2.2
- 在
Service
上添加对host
/txt
的访问器
- 在
- 0.2.1
- 修复与 C 类型相关的次要问题
- 0.2.0
- 修复发布服务时错误的问题
publish
现在是一个异步函数,因为它等待错误
- 0.1.0
- 初始版本
许可证
async-zeroconf
可以根据 MIT 许可证或 Apache 2.0 许可证进行许可。
依赖项
~3–14MB
~165K SLoC