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