好的,这是一个关于从套接字读取的一般问题。
我正在查看某人构建的 Objective C 应用程序,该应用程序使用 TCP 套接字库并为“didReadData”设置处理程序,该处理程序获取数据并将其发送到 JSON 解析器。
现在......当我说这基本上是完全错误的时候我是对的吗?根据网络延迟等许多因素,套接字读取是否会返回部分、全部或不返回任何数据?那么是不是你必须继续从套接字读取数据,直到你到达数据的末尾——但是这是分隔的——然后解析它?因此,例如,对于 JSON,如果您通过 HTTP 发送它,您将发送一个内容长度标头,该标头将告诉服务器(或客户端)何时可以停止从套接字读取?所以——如果你不使用 http 并且使用原始套接字,你必须有一些其他的分隔符或机制来确定消息的结尾在哪里。
我想知道这个特定的应用程序是否只在客户端和服务器位于同一主机上的情况下进行了测试——所以我想知道程序员是否认为它可以工作,因为巧合的是,到目前为止,第一次读取总是返回所有的数据。