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

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

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

有帮助吗?

解决方案

我已经研究过 SSDP 和 UPnP 的此类功能,但我建议使用自定义 UDP 组播 解决方案。基本上,多播与广播非常相似,但仅限于已加入多播组的计算机(即,要求广播)已联系。

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

其他提示

看来你需要的是 简单服务发现协议 或SSDP。这是在 Windows 中实现的,作为 Microsoft 支持的一部分 通用即插即用. 。由于这是一个行业标准协议,因此这似乎是一个不错的选择。例如,如果您想处理防火墙或其他问题,其他人已经解决了这个问题,而不必您自己推出解决方案。

由于您正在谈论 .NET,我假设您使用的是 Windows。有一个有点旧的文档 (2001) 描述了 Windows 的 C 风格 API 和 COM API,标题为 通用即插即用 (UPnP) 客户端支持. 。COM API 由 UPNP.DLL 公开,SSDP 的 C 风格 API 由 SSDPAPI.DLL 公开。

用于 UPNP 的 COM 风格 API 可能是您最好的选择。因为 C# 可以为您包装 COM 对象并处理互操作。我找不到任何将此 API 原生移植到 C# 或 .NET Framework 的地方。

您也可以考虑苹果的 你好, ,这是他们的 零配置 执行。它适用于 Mac、PC 和 Linux/BSD。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top