4

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

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

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

4

5 回答 5

4

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

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

于 2008-10-02T01:01:22.280 回答
1

似乎您需要的是简单服务发现协议或 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 公开。

UPNP的COM 样式 API可能是您最好的选择。由于 C# 可以为您包装 COM 对象并处理互操作。我找不到任何将这个 API 本地移植到 C# 或 .NET Framework 的地方。

于 2008-10-01T22:19:32.013 回答
1

您还可以考虑 Apple 的Bonjour,这是他们的Zeroconf实现。它适用于 Mac、PC 和 Linux/BSD。

于 2008-10-02T01:13:32.017 回答
0

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

于 2008-08-22T13:36:53.527 回答
0

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

于 2009-03-25T06:43:42.930 回答