【问题标题】:How can I simplify addressing an iOS device using Bonjour?如何使用 Bonjour 简化对 iOS 设备的寻址?
【发布时间】:2011-07-31 17:37:43
【问题描述】:

我想为 iOS 设备制作一个应用程序,该应用程序将使用 HTTP POST 请求与特殊类型的远程设备进行通信。问题是这个设备实际上会扮演客户端的角色,而 iOS 设备必须是接受请求的服务器。下一个问题,必须在发送请求的设备上静态配置主机名和端口。

虽然我知道可以尝试使用动态 DNS 服务和 UPnP/IGD 或 NAT-PMP 来解决 iOS 设备位于 NAT 路由器后面的问题,但我想知道使用 Bonjour 是否可以简化问题某种程度上来说。我是网络方面的新手,所以我正在寻找方向,如果 Bonjour 不会给我带来任何东西,我想避免研究它。

对于如何解决问题的任何其他想法也表示赞赏。

【问题讨论】:

  • 更好地描述网络拓扑可能会有所帮助 - iOS 设备和其他“客户端”设备是否在同一个本地网络上?
  • 这才是重点,他们不是,所以他们需要通过互联网进行通信,而 iOS 可能在某些路由器和 NAT 后面使用 wifi 或 3G
  • 虽然 Bonjour (mDNS) 可以在 WAN 上使用,但它实际上是为链接本地网络上的广告/发现而设计的。如果 iPhone 是通过蜂窝网络连接的,那么 iOS 上就不能真正依赖 uPNP。该设备是面向互联网还是在路由器后面?
  • 我认为期望它也可能在路由器后面更现实
  • 某种服务器充当中间人将是典型的解决方案,但我假设您希望设备在没有第三方的情况下相互发现?

标签: iphone objective-c http networking bonjour


【解决方案1】:

我考虑过这个问题。恕我直言,您不能保证您始终能够通过 WAN 公开基于 iOS 的服务(尽管有可能),所以这是不切实际的。

我建议的最佳解决方案是使用 uPNP 向外界打开路由器后面的设备,然后让它向 iPhone 发送 iOS push notification 并附上详细信息(主机名、IP、端口等)。

然后,iPhone 将不得不与防火墙设备建立某种持久连接以接收数据。

【讨论】:

    【解决方案2】:

    Bonjour 是一个发现和连接服务/客户端的好系统,但仅限于您的本地网络。我认为通过 Internet 尝试不是一个好主意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      相关资源
      最近更新 更多