How to public/announce over Linux: GSSDP (libgssdp in most linux distros) is a small, reliable and well tested library that handles the announcement and discovery part of UPnP: it's trivial to write a small program that advertizes the device uri with GSSDP (see example https://git.gnome.org/browse/gssdp/tree/tests/test-publish.c).
How do discover on Linux:
gssdp-discover
Useful Packages:
sudo apt-get install gssdp-tools
sudo apt-get install gupnp-tools
sudo apt-get install libgssdp-1.0-dev // For developing C program
Question: How do we discover on Windows what is advertised in test-publish.c (above) on Linux? Preferred Languages are C++/C and C#. Popular Windows platforms starting from Windows XP needs to be supported.
Once we have this answered we have a compact system to announce on Linux and discover devices both on Windows and Linux.