2012-05-12 37 views
0

我创建如下FTP请求一个InputStream:如何禁止FTP连接,如果服务器暂无数据

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

networkStream = (NSInputStream *) ftpStream;   

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

,当我读到的数据,如果服务器不能够连接,程序会被阻止在上面的第三行。有一种方法可以在您可以定义的一秒之后停止连接吗?或者如果有其他方法来处理这个问题?

回答

0

不要做同步read。相反,请在流对象上设置一个委托,将其安排在运行循环中,然后致电-open。如果您在应用程序的主线程中,那么只需将控制权返回到此时的框架,它就会为您运行运行循环。如果您在后台线程或编写命令行工具,请自行运行线程的运行循环。当有数据需要读取时,您的代理将被调用。

要建立连接的超时时间,您可以在运行循环中安排一个计时器。或者,如果您自己运行运行循环,则可以限制运行循环的时间。如果时间在连接完成之前到期,请关闭流。