4

背景:

我即将开始开发移动和桌面应用程序。它们都将连接到本地 wifi 网络(没有互联网连接),并且需要相互通信。一开始,我们将 iOS 和 Windows 定位为两个平台,目的是按顺序添加 Linux、OSX 和 Android 支持。桌面应用程序主要是一个数据库服务器/通知中心,用于接收来自 iOS 应用程序的更新并将数据发送到其他 iOS 应用程序。桌面应用程序可能有一个前端,但如果需要,我们也可以将其合并到 iOS 应用程序中。

目前我们只希望 iOS 应用程序自动检测它何时与服务器在同一网络上,然后显示该服务器发送的数据(类似 bonjour)。

据我所知,我们可以采取两条途径来实现这一点

  1. 为每个平台(Windows、Linux、OSX)创建一个完全原生的应用程序。Pro:我们喜欢使用本地应用程序来提高性能和易于安装的想法。Con:我对 Windows 或 Linux 开发一无所知。

  2. 创建一个使用 Web 技术(可能是 python)构建的应用程序,并创建一个易于使用的安装程序,该安装程序将在桌面计算机之外创建一个本地服务器,移动应用程序可以与之通信。优点:大部分开发都是跨平台的,安装程序应该很容易移植。缺点:如果我们确实想向服务器应用程序添加前端,它将不是平台原生的,而是使用 css+html+javascript GUI。

问题:

我的问题是如何在每种情况下实现 iOS 应用程序和服务器应用程序之间的连接。

  1. 我将如何通过本地网络接收和发送通知。

  2. 如果没有静态 IP,我如何使用 NSURLConnection 连接到服务器?


我希望这很清楚。如果没有,请询​​问,我会澄清。

2013 年 9 月 6 日更新

希望这能解决问题。我需要一个桌面应用程序来管理数据库,这个应用程序将连接到未连接到互联网的本地无线网络上的 iOS 设备。我可以使用 http 协议(最好使用烧瓶应用程序)或使用应用程序和服务器之间的直接套接字连接来做到这一点。我的问题是以上两种选择中哪一种最好?我的偏好是使用 Python+Flask 的基于 Web 的应用程序,但我不知道如何将 iOS 应用程序连接到在本地网络上运行且没有静态 IP 的烧瓶应用程序。对此的任何建议将不胜感激。

4

2 回答 2

1

如果没有应用程序或框架的任何细节,很难说得含糊不清并为您指明正确的方向。如果您已经探索过 Bonjour/Zeroconf 以将 iPhone 连接到服务器,我会继续往下看。

首先要看的是PyBonjour,了解如何从 Python 广播服务器。尽管在 Windows、Mac 和 Linux 上如何配置它存在一些问题,但这将是轻微的。例如,对于 Windows,用户需要安装Bonjour for Windows,而 Linux 用户需要 Avahi,但其中大部分可以在安装过程中进行设置。

其次,查看适用于 iOS 的 Bonjour 文档,因为它全部内置于系统和 API 中,所以会容易得多。从这里,服务器和客户端都可以相互发现。

最后一个问题是确定您是否希望 iPhone 连接到服务器,反之亦然,以及如何连接。然而,这些都是或多或少主观的基本网络决策。

由于您已经表明了对 Web 开发的偏好,您可以轻松地将 iPhone 连接到 Flask 服务器并使用 HTTP/HTML 技术从服务器检索详细信息。

关于通知,除非客户端 A 的数据更改意味着客户端 B绝对需要知道数据的更改,否则我不会担心。下次客户端 B 连接到服务器时,可以在此时推送正确的数据,而不必担心通知服务。如果另一个客户确实需要了解更改,另一种解决方案可能只是向他们提供建议并提示他们打开应用程序的常规旧电子邮件。

于 2013-09-11T02:11:01.630 回答
0

我肯定会建议一个网络应用程序。您的问题的答案如下:

我将如何通过本地网络接收和发送通知。

使用基于 REST 的 Web 服务与服务器进行通信。您必须使用轮询来接收数据:-(

如果没有静态 IP,我如何使用 NSURLConnection 连接到服务器?

  1. 如果可能,请在您的网络中配置一个指向服务器 ip 的域名。(配置本地 DHCP 以每次根据 mac 地址为您的服务器提供相同的 IP!)
  2. 有一个 IP 范围,当应用程序启动时,尝试访问一个特定的 URL 并检查它是否有响应。
  3. 每次应用启动时都要求用户输入服务器IP!
于 2013-09-12T20:23:37.213 回答