iphone应用程序如何与服务器交互?

Dav*_*Gao 14 iphone xcode cocoa-touch objective-c

我是一名新的程序员,他是iPhone开发和服务器的新手.我有很多问题要问.

你不必回答所有问题; 任何帮助表示赞赏!

  1. iPhone应用程序如何与服务器交互?
  2. 是否有一种特殊的服务器我应该用来与服务器交互iphone应用程序?
  3. 如果没有特定类型的服务器,那么可以使用哪种服务器?
  4. 它们的优点和缺点是什么?
  5. iPhone应用程序(客户端)应该做什么才能与服务器进行交互?
  6. 服务器如何知道将数据发送到哪个iPhone?
  7. 服务器应该怎么做才能与iPhone应用程序(客户端)进行交互?

Dan*_*Ray 12

您最好的办法是让您的iPhone发出Web服务器的Web请求.您的iPhone应用程序就像一个Web浏览器,向Web服务器发出http请求,并解析响应.

我现在正在构建一个应用程序,它可以访问我编写的用于执行数据库工作等的PHP脚本,并返回JSON对象.这不是花哨 - 我可以构建一个完整的SOAP或RPC Web服务,但我没有这样做,它只是使用查询字符串参数发出GET请求.

您想了解一些方便的库.谷歌"iPhone JSON"找到Stig Brautaset编写的JSON库,这是人们似乎最常使用的一个.此外,不要让自己完成iPhone内置的Web客户端框架所需的所有环节,而是获得ASIHTTPRequest,这是一个非常强大且简化的简化Web客户端库.

作为一般规则,您希望尽可能多地在服务器上进行处理.例如,我的应用程序中有一个地方我正在搜索在用户指定的本地坐标范围内发生的事件("距离我10英里内").我编写了PHP来构建纬度/经度边界框,并根据该数据库从数据库中进行查询.这比把一堆事件放下来然后让Core Location计算他们离我站立的距离要快得多.

  • @Alan:实际上,你可以处理HTTP的开销.如果没有,那么您可以访问套接字库,您可以自己滚动.如果你知道HTTP不适合你,你可能知道如何谈论原始套接字! (2认同)
  • @David:"服务器如何知道它是哪个iphone?" 它没有.如果您需要识别击中您的用户,那么您在服务器上的第一次点击应该是登录名和密码.您可以返回一些可以保存在iPhone内存中的识别数据(或使用NSUserDefaults在会话之间保存).然后在每个后续请求中将该ID作为参数传递.您对JSON流程的分析已经过时了.我使用PHP JSON库将PHP数据对象转换为JSON消息,然后使用iPhone上的JSON库将其转换回本机数据结构. (2认同)
  • @David:"服务器如何知道它是哪个手机"的问题就像问"网络服务器如何知道哪个版本的Firefox正在发出请求?" 我的意思是,它会回答对提出请求的人的请求,你不必担心那部分.除此之外,它对任何特定客户的身份一无所知. (2认同)

Ala*_*lan 5

你已经问了很多问题,所以我会尽力回答它们:

首先,您需要更清楚一点,您在谈论什么类型的服务器?电子邮件服务器、网络服务器、lolcat 服务器,视情况而定。

在基本层面上,iphone 通过互联网进行通信。互联网使用互联网协议,有两个建立在 IP 之上的标准协议:传输控制协议和用户数据报协议。每个都有它自己的用途和功能。

TCP/IP 和 UDP/IP 构成了 Internet 通信的主干。

更具体的应用程序协议建立在这两个互联网协议之上,对给定的应用程序具有特定的格式。例如,HTTP 是通过 TCP 在 Web 服务器和 Web 浏览器客户端之间传输 HTML 和其他 Web 信息的标准协议。

因此,您的 iPhone 将使用与服务器通信所需的任何协议。对于更常见的服务器通信,iOS SDK 提供了构造消息的方法(例如,如果您希望向 Web 服务器发出 HTTP 请求,您可以使用initWithContentsOfURL发送 GET 请求)。

如果您构建了自定义服务器,则需要在 iphone 上构建所需的消息协议,并将其发送到服务器,使用 TCP 或 UDP(无论您的自定义服务器期望什么)。