How to make your software discoverable by other applications in C#

This guide demonstrates how to make your software discoverable by other applications in C#. It is really useful if you are going to build a more complex application which requires the a live streamed video as a resource.

What does discoverability means?

When using software for the first time, discoverability is important. It let's the other software to recognize your software's capabilities and communicate with it. Therefore you will be able to create applications that work together with your other programmes instead of working separately.

How does it work?

This specification defines a multicast discovery protocol to locate services. The primary mode of discovery is a client searching for one or more target services. To find a target service by the type of the target service, a scope in which the target service resides, the client sends a probe message to a multicast group. In response target services that match with the probe send a response directly to the client. To locate a target service by name, a client sends a resolution request message to the same multicast group, and again, the target service that matches sends a response directly to the client.

process of discovery diagram
Figure 1 - Diagram of the process of discovery

To minimize the need for polling, when a target service joins the network, it sends an announcement message to the same multicast group. By listening to this multicast group, clients can detect newly-available target services without repeated probing.

To scale to a large number of endpoints, this specification defines multicast suppression behavior if a discovery proxy is available on the network. Specifically, when a discovery proxy detects a probe or resolution request sent by multicast, the discovery proxy sends an announcement for itself. By listening to these announcements, clients detect discovery proxies and switch to use a discovery proxy-specific protocol. However, if a discovery proxy is unresponsive, clients revert to use the protocol described herein.

What networks are supported?

To support networks with explicit network management services like DHCP, DNS, domain controllers, directories, etc., this specification acknowledges that clients and/or target services may be configured to behave differently than defined herein. For example, another specification may define a well-known DHCP record containing the address of a discovery proxy, and compliance with that specification and may require endpoints to send messages to this discovery proxy rather than to a multicast group.

While the specific means of such configuration is beyond the scope of this specification, it is expected that any such configuration should allow clients and/or target services to migrate smoothly between carefully-managed and ad hoc networks.

Related Pages

FAQ

Below you can find the answers for the most frequently asked questions related to this topic:

  1. How can I get the URL of the camera?

    You can get the URL from the producer of the camera. (In the 10th tutorial you can find information on how to create an own IP camera discoverer program.)

  2. I have not managed to build the solution. How to solve it?

    • Please set the Target framework property of the project to .NET 4.0.
    • You should add the OzekiSDK.dll to the references of the solution.
    • Please import the missing classes.

More information