简而言之:如何可靠地发现在零客户端配置的(可能是多分段的)局域网上某处运行的服务器
我的客户端应用程序必须在不知道服务器 IP 地址的情况下找到服务器应用程序。它必须在本地 LAN 上工作,该 LAN 可以通过集线器或其他交换设备分成多个部分。
我已经有了一个可行的解决方案,但是让它在多段网络上工作有点麻烦。它的工作原理如下:
当客户端启动时,它会在自己的网段上发送 UDP 广播。如果服务器在同一段上运行,则它可以正常工作 - 服务器使用适当的消息进行响应。
如果服务器和客户端运行在由不会转发 UDP(最可能的情况)的集线器/交换机分隔的网络上,那么我在每个段上运行一个服务器实例,它们通过 TCP 将客户端请求相互转发 -但我需要为服务器实例配置它(简单,但对技术支持来说仍然很痛苦。)这是我需要解决的主要问题。在某些网站上,我们有数百个客户端在 5 或 6 个独立的细分市场上运行。
我面临的问题: 1. 虽然我的应用程序安装程序在防火墙上启用了适当的端口,但有时我会遇到这种情况似乎没有正确发生的情况。2. 必须在不转发 UDP 的集线器/交换网络上运行多个服务器实例(因此配置和维护它们)
最后,我需要一个无需维护即可在可能没有配置 Active Directory 或其他查找服务的最小 Windows 网络(XP / 2000 / Vista)上工作的解决方案。
我不想为此标记任何运行时的东西——应该可以用普通的 VC++ 或 Delphi 来做。
商业应用程序通常采用哪些方法?我知道 SQL Server 使用广播和 NetBEUI 调用的组合(我可能错了)。
提前致谢。