#notifications #service-discovery #streaming-media #protocols

no-std cotton-ssdp

Implementing SSDP, the Simple Service Discovery Protocol

4 releases

0.0.4 Sep 27, 2024
0.0.3 Aug 12, 2023
0.0.2 Apr 24, 2023
0.0.1 Mar 29, 2023

#834 in Network programming

47 downloads per month

CC0 license

250KB
6K SLoC

CI status codecov dependency status Crates.io Crates.io docs.rs License: CC0-1.0

cotton-ssdp

Part of the Cotton project.

Implementing SSDP, the Simple Service Discovery Protocol

The cotton-ssdp crate encapsulates a client and server for the Simple Service Discovery Protocol (SSDP), a mechanism for discovering available resources (services) on local networks. A resource might be a streaming-media server, or a router, or a network printer, or anything else that someone might want to search for or enumerate on a network.

What is advertised, or discovered, is, for each resource, a unique identifier for that particular resource (Unique Service Name, USN), an identifier for the type of resource (Notification Type, NT), and the location of the resource in the form of a URL.

SSDP is mainly used by UPnP (Universal Plug-'n'-Play) systems, such as for media libraries and local streaming of music and video -- but the mechanism is quite generic, and could as easily be used for any type of device or resource that must be discoverable over a network, including in ad hoc settings which don't necessarily have expert network administrators close at hand.

At present this crate requires the "nix" crate (except when used in no_std builds) and so is unlikely to work on Windows platforms. It is tested only on AMD64 and ARM64 Linux.

Library documentation is on docs.rs.

Dependencies

~3–12MB
~139K SLoC