好吧,这是关于从套接字读取的一般问题。套接字读取和部分数据 - 需要进行完整性检查
我在看它使用TCP套接字库,并建立一个处理程序“didReadData”这需要的数据并将其发送到一个JSON解析器的目标C应用程序,有人建。
现在......我说得对,当我说这基本上是完全错误的吗?是不是这样,套接字读取可能会返回一些,全部或没有数据,这取决于许多因素,如网络延迟?那么是不是这样,你必须从套接字读取数据,直到数据结束 - 但是这是分隔的 - 然后解析它?因此,例如,对于JSON,如果您通过HTTP发送它,您会发送一个内容长度标头,告诉服务器(或客户端)何时可以停止从套接字读取数据?所以 - 如果你不使用http和使用原始套接字,你必须有其他分隔符或机制来确定消息的结尾。
我想知道,如果这个特定的应用程序只在客户端和服务器在同一主机上的情况下进行过测试 - 所以我想知道如果程序员认为它的工作原理,只是巧合的是,第一次读取总是直到现在才返回所有的数据。
可以工作的唯一可能是服务器关闭发送所有数据后的连接。这是一个糟糕的设计,但已被用于非严重系统,其中延迟时间可接受。 – 2012-04-18 21:55:27