远程服务器自动发现。广播与否?

时间:2008-08-22 13:22:39

标签: .net networking remoting udp broadcast

我有一个与.Net远程处理通信的客户端/服务器应用程序。我需要我的客户能够在网络上找到服务器,而无需客户端配置。

据我所知,没有支持远程发现。我准备实施UDP解决方案,客户端将能够通过广播消息找到服务器。

在我继续前,我希望听到集体的SO智慧。这是最好的方法吗?还有其他建议吗?

5 个答案:

答案 0 :(得分:4)

我已经查看了SSDP和UPnP这类功能,但我建议使用自定义UDP multicast解决方案。基本上,多播与广播非常相似,但仅联系已加入多播组(即请求广播)的机器。

恕我直言,SSDP和UPnP,对于资源发现而言臃肿且过于复杂......但是,嘿,这是一个标准。 ;)

答案 1 :(得分:1)

看起来你需要的是Simple Service Discovery Protocol或SSDP。这是在Windows中实现的,作为Microsoft对Universal Plug and Play的支持的一部分。由于这是一个行业标准协议,它似乎是一个不错的选择。例如,如果您想要处理防火墙或其他问题,那么其他人就会想到这一点,而不是您必须推出自己的解决方案。

既然你在谈论.NET,我会假设你在Windows上。有一个稍微陈旧的文档(2001)描述了一个C风格的API和一个名为Universal Plug and Play (UPnP) Client Support的Windows COM API。 COM API由UPNP.DLL公开,SSDP的C风格API由SSDPAPI.DLL公开。

COM-style APIs for UPNP可能是你最好的选择。因为C#可以为你包装COM对象并处理互操作。我找不到任何将此API本地移植到C#或.NET Framework的地方。

答案 2 :(得分:1)

您可能还会考虑Apple的Bonjour,即Zeroconf实施。它适用于Mac,PC和Linux / BSD。

答案 3 :(得分:0)

我在远程工作中找到的最佳解决方案是将服务器列表保存在客户端系统上的配置文件中并使其可更新。不是最容易维护但速度快且没有广播。

答案 4 :(得分:0)

由于最近的MS更新,我的多播UDP解决方案似乎不可靠。