2011-01-14 61 views
3

CFStreamCreatePairWithSocketToHost工作始終是方便:CFWriteStreamWrite/CFReadStreamWriter輕鬆超時?

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

,因爲它可以讓你的產品(A R和W管)的時候了。不幸的是CFReadStreamReadCFWriteStreamRead區塊。有沒有一種乾淨的方式來設置此超時(例如,使用streamOption)?它們在一個線程中運行 - 並且有很多並行運行 - 希望避免runloop /信號 - 因爲任何其他未決的讀/寫操作都不應該被中斷)。

謝謝,

Dw。

回答

1

您可以使用CFReadStreamHasBytesAvailable來檢查是否有可用的東西。如果是的話,CFReadStreamRead不會阻塞。或者您可以設置客戶端(CFReadStreamSetClient)並收聽通知(您的情況爲kCFStreamEventHasBytesAvailable)。