我为ftp请求创建了一个输入流,如下所示:
ftpStream = CFReadStreamCreateWithFTPURL(NULL, (CFURLRef) url);
networkStream = (NSInputStream *) ftpStream;
[self.networkStream read:<#(uint8_t *)#> maxLength:<#(NSUInteger)#>]
当我读取数据时,如果服务器无法连接,程序将被卡在上面的第三行。是否有一种方法可以在一秒钟之后停止连接,您可以定义?或者,如果有其他方法来处理这个?
答案 0 :(得分:0)
不要进行同步read
。而是在流对象上设置委托,在运行循环上安排它,然后调用-open
。如果您在应用程序的主线程上,只需将控制权返回给框架,它将为您运行运行循环。如果您使用后台线程或编写命令行工具,请自行运行线程的运行循环。当要读取数据时,将调用您的代理。
要为连接建立超时,您可以在运行循环上安排计时器。或者,如果您自己运行运行循环,则可以限制运行它的时间。如果时间在连接完成之前到期,则只需关闭流。