【问题标题】:Using NSStream to communicate with PHP?使用 NSStream 与 PHP 通信?
【发布时间】:2009-07-23 19:28:03
【问题描述】:

我正在处理一个需要在执行期间从 PHP 脚本接收数据的 iPhone 项目。我的第一个想法是在任一端使用套接字/流来连接两者,但我无法从 iPhone 端找到有关如何执行此操作的信息。

有没有人走上这条路,可以为我指出一些有用的资源或提供一些建议?官方文档似乎更适合桌面应用程序,并且使用了 iPhone 上似乎不支持的代码(即 NSHost)。

更新:此应用程序的预期用途是接收来自执行脚本的日志消息,因此我不能使用带有 JSON 或 XML 的简单 HTTP 请求。许多情况会涉及到页面被另一个客户端加载,其中脚本会将日志消息中继/推送到 iPhone。

【问题讨论】:

    标签: iphone objective-c sockets iphone-sdk-3.0 stream


    【解决方案1】:

    投票是邪恶的。这样做会消耗电池电量。

    您可以考虑在 iPhone 上运行 HTTP 服务器。查看this blog post;它在 Cocoa 中实现了 HTTP 服务器,以及使用它进行双向通信的示例代码。

    PHP CURL 库(无法链接它,因为该站点还不信任我,只需在 php.net 中搜索它)是一种(相对)简单、简单的使用 PHP 脚本发出 http 请求的方法。

    【讨论】:

    • 有趣的想法 - 这可能对很多不同的应用程序有用。
    • 如果 iPhone 在子网和防火墙后面,PHP 脚本如何知道如何联系 iPhone?
    【解决方案2】:

    为什么不直接使用 HTTP?使用 XML 或 JSON 创建一个 ad-hoc 协议,使用 POST 进行上游数据传输。就个人而言,我是这类事情的 JSON 粉丝。 PHP 应该只返回 JSON 格式的数据,而不是返回 HTML 格式的网页进行渲染。

    【讨论】:

    • 在这种情况下,这对我的目的不起作用(在上面添加了解释)。
    • 所以您正在寻找可以从脚本端打开连接的东西?您可以只在 iPhone 端使用轮询界面。我认为您需要实现一个推送通知系统才能从服务器端打开连接。
    • 理想情况下,我认为 iPhone 会定期轮询传入的连接请求,一旦找到,将使用持续连接脚本执行的生命周期。不过,作为第一步,我很乐意省略轮询部分,让它只听 30 秒左右并接受任何传入的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多