2011-01-14 42 views
3

CFStreamCreatePairWithSocketToHost工作始终是方便:CFWriteStreamWrite/CFReadStreamWriter轻松超时?

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, 
     (CFStringRef) hostnameOrIp, 
     aPort, 
     &readStream, 
     &writeStream); 

,因为它可以让你的产品(A R和W管)的时候了。不幸的是CFReadStreamReadCFWriteStreamRead区块。有没有一种干净的方式来设置此超时(例如,使用streamOption)?它们在一个线程中运行 - 并且有很多并行运行 - 希望避免runloop /信号 - 因为任何其他未决的读/写操作都不应该被中断)。

谢谢,

Dw。

回答

1

您可以使用CFReadStreamHasBytesAvailable来检查是否有可用的东西。如果是的话,CFReadStreamRead不会阻塞。或者您可以设置客户端(CFReadStreamSetClient)并收听通知(您的情况为kCFStreamEventHasBytesAvailable)。