这是 Asynchronous IO with CFWriteStream 的兄弟问题。我正在使用 CFReadStreamScheduleWithRunLoop 和 CFReadSteamRead 来执行异步 IO。我们怎样才能安全地检索所有阻塞的日期?
假设消息的实际大小是 1200(但我们不知道),而我的读取缓冲区的大小是 1024。对 CFReadStreamRead 的调用将检索最多 1024 字节的数据,但因为我们不这样做如果不知道消息的大小,我们应该重复调用CFReadStreamRead。问题是,由于我们不知道流套接字已接收到多少数据,因此 CFReadStreamRead 可能会在第二次调用时阻塞。我们怎样才能避免这个问题呢?
谢谢!
最佳答案
在您的流上再次调用 CFReadStreamHasBytesAvailable()
,看看从中读取是否仍然安全(或者是否唯一知道的方法就是尝试)。
关于iphone - 使用 CFReadStream 进行异步 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3343984/