1个不稳定版本
| 0.1.0 | 2024年7月6日 | 
|---|
#1112 in 网络编程
28KB
526 行
SSDP
这是SSDP的RFC草案实现,但应与较新的UPnP兼容。
随时欢迎贡献。
计划功能
- 发送M-SEARCH请求
- 响应M-SEARCH请求
- 存储所有响应M-SEARCH请求的服务列表
- 当服务启动时发送ALIVE
- 当服务关闭时发送BYEBYE
- 接受任何顺序的标题(目前只支持预定义顺序的标题)
示例
服务
要启动一个监听并响应M-SEARCH请求的服务,请执行以下操作
let desc = ServiceDescription {
    usn_uri: "uuid:83760048-2d32-4e48-854f-f63a8fa9fd09".to_string(), // TODO get from db
    service_type_uri: "AccessTime:Multicast".to_string(),
    expiration: 100,
    location: "https://127.0.0.1/api/v1/adopt".to_string(), // TODO get a servername from conf
};
let service = Service::new(desc);
service.listen(MulticastAddr::Loopback).await;
客户端
客户端发送一个M-SEARCH请求并存储所有响应服务的列表。
let log = LogConfig{
    syslog_server: None,
    syslog_port: None,
    syslog_protocol: None,
    log_level: Some("trace".to_string()),
};
log.initialize_logger();
let client = Client::default();
client
    .discover("uuid:83760048-2d32-4e48-854f-f63a8fa9fd09".to_string(), MulticastAddr::Loopback, "AccessTime:Multicast".to_string())
    .await?;
现在您可以使用client.get_services()方法获取所有响应服务的Vec<ServiceDescription>。
许可证
这只是一个为另一个项目设置的配置,所以您可以随意使用。因此,您可以自由选择以下选项
贡献
除非您明确表示,否则根据Apache-2.0许可证定义,您提交的任何贡献都应如上所述双重许可,不附加任何额外条款或条件。
依赖关系
~3–11MB
~113K SLoC