跨WiFi /域网络的客户端/服务器对等发现

问题描述:

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

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

任何见解,将不胜感激。

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

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

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

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

多播UDP通常不通过路由器边界传播。因此,传统是使用一些*服务器来发现同伴。当你需要发现一个服务器时,事情变得更加棘手。在某些情况下,可以使用DNS(您可以将自定义记录放入DNS中,记录将引用服务器的地址)。在Active Directory环境中,您可以使用某些AD服务器来保留相似的记录。