1

我正在尝试创建一个客户端/服务器应用程序(带有 Windows Phone 7 客户端和 Windows PC 服务器),它可以在网络上自动发现彼此,而无需任何干预服务器或预先存在的对等网络。我已经能够使用多播 UDP 为简单的发现模型创建原型客户端/服务器实现。当两台机器都配置为使用相同的 WiFi 网络时,此方案运行良好。但是,在服务器 (PC) 通过以太网连接到域网络的情况下,客户端 (WP7) 和服务器将无法再发送或接收 UDP 多播数据包。两者配置了不同的网关服务器,但奇怪的是,如果使用服务器的显式 IP 地址,它们仍然可以通过 TCP/IP 建立连接。

当客户端/服务器在以这种方式配置的网络上时,它们自动发现彼此的正确方法是什么?是否有自动发现的标准机制?这可能是网络问题还是可以在应用层解决?

任何见解将不胜感激。

4

2 回答 2

0

多播 UDP 通常不会跨路由器边界传播。因此,传统是使用一些中央服务器来发现对等点。当您需要发现服务器时,事情变得更加棘手。在某些情况下,可以使用 DNS(您可以将自定义记录放入 DNS,该记录将引用服务器的地址)。在 Active Directory 环境中,您可能可以使用一些 AD 服务器来保存类似的记录。

于 2012-08-14T05:59:55.900 回答
0

以上是我的想法,不知道是否准确。用UDP方式做应该没问题,我猜像Totem这样的协议依赖于UDP。UDP 是网络协议也用于自动服务发现的东西。

但是,当您处理 UDP 不可靠的跨域问题时,您将不得不使用 TCP。TCP 将确保可靠性,但我怀疑它是否有能力进行自动发现。

我认为一个好方法是让服务器注册到像 LDAP 这样的命名服务器 .. 这样客户端就可以查询 LDAP 并获​​取服务器详细信息。但这更像是我的一种应用层方法。

我在我们的产品中看到我们使用 TCP 上的 Gossip 协议来检查分布式系统的心跳。

于 2012-08-14T05:42:59.957 回答