我的应用程序使用 AsyncSocket 通过 TCP 与服务器通信。通信有两种情况:
应用程序向服务器发送一些东西,服务器做出响应。应用程序需要读取此响应并对其中的信息进行处理。这个响应总是相同的长度,例如,一个响应总是 6 个字节。
应用程序处于“空闲”状态,服务器在某个时间启动通信(应用程序未知)。该应用程序需要读取服务器发送的任何内容(可以是任意数量的字节,但第一个字节将指示后面有多少字节,因此我知道何时停止读取)并处理此信息。
第一种情况工作正常。readDataToLength:timeout:tag
返回我需要的东西,我可以用它做我想做的事。这是我不确定如何实施的第二种情况。我不能使用readDataToLength:timeout:tag
,因为我事先不知道长度。
我想我可以做点什么readDataWithTimeout:tag:
,将超时设置为-1。我相信,这使得套接字不断地监听任何进来的东西。但是,这可能会干扰响应我发送的内容而传入的数据(情况 1)。该应用程序无法再区分来自情况 1 或情况 2 的传入数据。
这里有谁能帮我解决这个问题吗?