2012-05-12 36 views
0

我創建如下FTP請求一個InputStream:如何禁止FTP連接,如果服務器暫無數據

ftpStream = CFReadStreamCreateWithFTPURL(NULL, (CFURLRef) url); 

networkStream = (NSInputStream *) ftpStream;   

[self.networkStream read:<#(uint8_t *)#> maxLength:<#(NSUInteger)#>] 

,當我讀到的數據,如果服務器不能夠連接,程序會被阻止在上面的第三行。有一種方法可以在您可以定義的一秒之後停止連接嗎?或者如果有其他方法來處理這個問題?

回答

0

不要做同步read。相反,請在流對象上設置一個委託,將其安排在運行循環中,然後致電-open。如果您在應用程序的主線程中,那麼只需將控制權返回到此時的框架,它就會爲您運行運行循環。如果您在後臺線程或編寫命令行工具,請自行運行線程的運行循環。當有數據需要讀取時,您的代理將被調用。

要建立連接的超時時間,您可以在運行循環中安排一個計時器。或者,如果您自己運行運行循環,則可以限制運行循環的時間。如果時間在連接完成之前到期,請關閉流。