使用 CFStreamCreatePairWithSocketToHost
总是很方便:
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,
(CFStringRef) hostnameOrIp,
aPort,
&readStream,
&writeStream);
因为它会立即为您提供 cargo (r 和 w 管道)。不幸的是 CFReadStreamRead
和 CFWriteStreamRead
阻塞。有没有一种干净的方法来设置超时(例如使用 streamOption)?它们在一个线程中运行——因为有相当多的并行操作——希望避免运行循环/信号——因为任何其他挂起的读/写不应该被中断。
谢谢,
数据。
最佳答案
您可以使用 CFReadStreamHasBytesAvailable
来检查是否有可用的东西。如果是,CFReadStreamRead
将不会阻塞。或者您可以设置客户端(CFReadStreamSetClient
)并监听通知(在您的情况下为kCFStreamEventHasBytesAvailable
)。
关于iphone - CFWriteStreamWrite/CFReadStreamWriter 容易超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4693864/