【问题标题】:What's a way for a client to automatically resolve the ip address of a server?客户端自动解析服务器IP地址的方法是什么?
【发布时间】:2010-04-28 13:29:37
【问题描述】:

我正在从事的项目是客户端/服务器架构。在 LAN 环境中,我希望客户端能够自动确定服务器的地址。我想避免必须使用服务器的 IP 地址手动配置每个客户端。做这个的最好方式是什么?我考虑过的一些替代方案是:

  1. 服务器可以监听 来自客户端的广播数据包。 来自客户端的消息将是 对 IP 地址的请求 服务器。服务器将使用其地址进行响应。
  2. 运行我项目服务器的机器也可能有一个 bind server 正在运行。局域网的路由器可以 配置为将其用作其之一 DNS 服务器。
  3. 我想我看到了 有一个绑定库。这样做 意味着我可以构建绑定服务 进入我的服务器,这样绑定就不会 必须安装在服务器上吗?

还有其他想法吗?你过去做了什么?这些方法和其他可能建议的方法的优缺点是什么?

感谢您的帮助!

【问题讨论】:

  • 客户端可能是 Windows 笔记本电脑、iPod Touch 和 iPad 的混合体。

标签: networking network-programming client-server bind


【解决方案1】:

我喜欢第一名,这对我来说似乎是最短和最简单的。如果“LAN”实际上涉及您无法广播的交换机,可能会变得棘手。那么,多播应该会有所帮助。

您也可以使用 DNS,如 Zeroconf。有关实现的信息,请参阅 Bonjour

【讨论】:

  • Bonjour 对客户免费。服务器也是免费的吗?
【解决方案2】:

您可以使用 WCF 4.0 的新发现功能。有两种可能:

  1. 服务器可以向网络宣布他已经启动或关闭,客户端可以分别连接到它或查看其他地方。
  2. 客户端广播一个服务查询,网络上所有匹配的服务都会回复。然后,客户可以选择他希望使用的服务。

您可以使用其中一个或两个都使用,并且这一切都由 WCF 处理,因此实际使用它的工作很少。如果您有限制性网络拓扑(例如 NAT 或其他路由问题),您甚至可以设置 WCF 代理。代理可以交叉/转换协议,甚至具有自定义负载平衡或其他路由逻辑。

http://msdn.microsoft.com/en-us/library/dd456782.aspx

【讨论】:

  • 我认为如果所有客户端和服务器都是基于 Windows 的,这将是一个很好的解决方案。如果服务器正在与 iPad 通信,它会工作吗?
  • 大部分内容都是 WS-Discovery,一种独立于平台的 Web 标准。如果您使用支持该标准的 iPhoneOS 客户端,那么它将工作。见en.wikipedia.org/wiki/WS-Discovery
猜你喜欢
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多