简而言之:如何可靠地发现在没有客户端配置的(假设是多段的)局域网上运行的服务器
我的客户端应用程序必须在不知道服务器IP地址的情况下定位服务器应用程序。它必须在本地LAN上工作,该LAN可能被分成具有集线器或其他交换设备的网段。
我已经有了一个可以工作的解决方案,但要让它在多网段网络上工作有点麻烦。它的工作原理如下:
当客户端启动时,它会在自己的网段上发送UDP广播。如果服务器在同一网段上运行,则它可以正常工作-服务器会使用相应的消息进行响应。
如果服务器和客户机运行在由不转发UDP的集线器/交换机分隔的网络上(最有可能的情况),那么我在每个网段上运行一个服务器实例,它们通过TCP相互转发客户机请求-但我需要为服务器实例配置这个(很简单,但对于技术支持来说仍然很麻烦)。这是我需要解决的主要问题。在一些网站上,我们有数百个客户端运行在5个或6个独立的网段上。
我面临的问题: 1.虽然我的应用程序安装程序在防火墙上启用了适当的端口,但有时我遇到的情况似乎并不正确。2.必须在不转发UDP的集线器/交换网络上运行多个服务器实例(并因此对其进行配置和维护
最后,我需要一个不需要维护就能在最小的Windows网络(XP / 2000 / Vista)上工作的解决方案,该网络可能没有配置Active Directory或其他查找服务。
我不想为这个添加任何运行时的东西--应该能够用普通的VC++或Delphi来做。
商业应用程序通常采用什么方法?我知道SQL Server结合使用广播和NetBEUI调用(这一点我可能是错的)。
提前谢谢。
发布于 2009-07-28 05:55:47
您有几个术语问题:
在
一旦我们解决了这个问题,你有几个选择:
DNS
发布于 2009-07-28 05:48:20
如果你有域服务器,我会去与它的小服务。您可以连接到它的其他服务,并将其用作分发点。
为什么选择域服务器?查找它的名称(DsGetDcName)相对容易。
其他选择包括DHCP服务器、DNS服务器或其他需要维护人员填写的服务器。
https://stackoverflow.com/questions/1192059
复制相似问题