首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建可在网络中发现的视窗(win32)服务

创建可在网络中发现的视窗(win32)服务
EN

Stack Overflow用户
提问于 2009-07-28 05:22:27
回答 2查看 676关注 0票数 1

简而言之:如何可靠地发现在没有客户端配置的(假设是多段的)局域网上运行的服务器

我的客户端应用程序必须在不知道服务器IP地址的情况下定位服务器应用程序。它必须在本地LAN上工作,该LAN可能被分成具有集线器或其他交换设备的网段。

我已经有了一个可以工作的解决方案,但要让它在多网段网络上工作有点麻烦。它的工作原理如下:

当客户端启动时,它会在自己的网段上发送UDP广播。如果服务器在同一网段上运行,则它可以正常工作-服务器会使用相应的消息进行响应。

如果服务器和客户机运行在由不转发UDP的集线器/交换机分隔的网络上(最有可能的情况),那么我在每个网段上运行一个服务器实例,它们通过TCP相互转发客户机请求-但我需要为服务器实例配置这个(很简单,但对于技术支持来说仍然很麻烦)。这是我需要解决的主要问题。在一些网站上,我们有数百个客户端运行在5个或6个独立的网段上。

我面临的问题: 1.虽然我的应用程序安装程序在防火墙上启用了适当的端口,但有时我遇到的情况似乎并不正确。2.必须在不转发UDP的集线器/交换网络上运行多个服务器实例(并因此对其进行配置和维护

最后,我需要一个不需要维护就能在最小的Windows网络(XP / 2000 / Vista)上工作的解决方案,该网络可能没有配置Active Directory或其他查找服务。

我不想为这个添加任何运行时的东西--应该能够用普通的VC++或Delphi来做。

商业应用程序通常采用什么方法?我知道SQL Server结合使用广播和NetBEUI调用(这一点我可能是错的)。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-28 05:55:47

您有几个术语问题:

  • 中,您说的“网段”似乎是指"IP子网“。同一网段上的设备可以看到相同的IP路由器您说的“集线器/交换机”您出现的意思是"IP broadcasts.
  • Where“。
  • 当您说”不转发UDP“时,问题实际上是”不转发IP广播“。

一旦我们解决了这个问题,你有几个选择:

DNS

  • 如果您的DNS服务器允许动态DNS更新,您的服务器可以在DNS中以众所周知的名称注册自己。您可能应该使用RFC2782中指定的SRV记录。然后,客户端执行DNS查找,以发现server(s).

  • You可以静态地在组织的DNS中分配您的服务器的知名名称,可能会像上一个选项一样使用SRV记录。

  • 如果您的路由器支持IP多播,则您的服务器可以加入IP多播组。然后,客户端将其初始发现请求作为UDP数据包发送到(预先指定的)组播地址。
票数 1
EN

Stack Overflow用户

发布于 2009-07-28 05:48:20

如果你有域服务器,我会去与它的小服务。您可以连接到它的其他服务,并将其用作分发点。

为什么选择域服务器?查找它的名称(DsGetDcName)相对容易。

其他选择包括DHCP服务器、DNS服务器或其他需要维护人员填写的服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1192059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档