<p>I have a client/server application that communicates with .Net remoting. I need my clients to be able to find the server(s) on the network without requiring client-side configuration. </p>

<p>As far as I know, there is no support for discovery in remoting. I am prepared to implement a UDP solution where the clients will be able to find the servers via broadcast messages. </p>

<p>I want to hear the collective SO wisdom before I go ahead. Is this the best way? Any other suggestions?</p>

[{'answer_id': 22370, 'author': 'Rob Bazinet', 'author_id': 2305, 'author_profile': 'https://Stackoverflow.com/users/2305', 'pm_score': 0, 'selected': False, 'text': '<p>The best solution I have found in my remoting work was to keep the server list in a config file on the client systems and make it updateable.   Not the easiest to maintain but was fast and no broadcasting.</p>\n'}, {'answer_id': 160025, 'author': 'Tim Farley', 'author_id': 4425, 'author_profile': 'https://Stackoverflow.com/users/4425', 'pm_score': 1, 'selected': False, 'text': '<p>Seems like what you need is the <a href="http://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol" rel="nofollow noreferrer">Simple Service Discovery Protocol</a> or SSDP.  This is implemented in Windows as part of Microsoft\'s support for <a href="http://en.wikipedia.org/wiki/Universal_Plug_and_Play" rel="nofollow noreferrer">Universal Plug and Play</a>.  Since this is an industry standard protocol, it seems like a good bet.  For instance, if you want to deal with firewalls or other issues, this will have been figured out by others instead of you having to roll your own solution.</p>\n\n<p>Since you are talking .NET I\'ll assume you are on Windows.  There\'s a somewhat old document (2001) describing a C-style API and a COM API for Windows entitled <a href="http://technet.microsoft.com/en-us/library/bb727027.aspx" rel="nofollow noreferrer">Universal Plug and Play (UPnP) Client Support</a>.  The COM APIs are exposed by UPNP.DLL and the C-style APIs for SSDP are exposed by SSDPAPI.DLL.</p>\n\n<p>The <a href="http://msdn.microsoft.com/en-us/library/aa382303(VS.85).aspx" rel="nofollow noreferrer">COM-style APIs for UPNP</a> are probably your best bet.  Since C# can wrap up COM objects for you and handle the interop.  I could not find any place where this API has been ported to C# or the .NET Framework natively.</p>\n'}, {'answer_id': 160441, 'author': 'oz10', 'author_id': 14069, 'author_profile': 'https://Stackoverflow.com/users/14069', 'pm_score': 3, 'selected': True, 'text': '<p>I\'ve looked at both SSDP and UPnP for this type of functionality, but I\'d recommend going with a custom UDP <a href="http://en.wikipedia.org/wiki/Multicast" rel="nofollow noreferrer">multicast</a> solution. Basically, multicast is very similar to a broadcast, but only machines that have joined the multicast group (i.e. requested the broadcast) are contacted. </p>\n\n<p>IMHO, SSDP and UPnP and bloated and overly complicated for resource discovery... but hey, it\'s a standard. ;)  </p>\n'}, {'answer_id': 160459, 'author': 'Will Hartung', 'author_id': 13663, 'author_profile': 'https://Stackoverflow.com/users/13663', 'pm_score': 1, 'selected': False, 'text': '<p>You might also consider Apple\'s <a href="http://en.wikipedia.org/wiki/Bonjour_(software)" rel="nofollow noreferrer">Bonjour</a>, which is their <a href="http://en.wikipedia.org/wiki/Zeroconf" rel="nofollow noreferrer">Zeroconf</a> implementation. It\'s available for Mac, PCs, and Linux/BSD.</p>\n'}, {'answer_id': 680463, 'author': 'Rohit', 'author_id': 82410, 'author_profile': 'https://Stackoverflow.com/users/82410', 'pm_score': 0, 'selected': False, 'text': '<p>My multicast UDP solution seems to be unreliable due to recent MS update.</p>\n'}]
['https://Stackoverflow.com/questions/22321', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/227/']