我编写了一个程序,它使用 Apple 的流编程指南中概述的 NSStream 协议连接到给定 IP 上的服务器。数据的连接和传输完美无缺,但是如果用户指定了错误的 IP 并且程序尝试打开流,则会导致程序无响应。
根据我的阅读,handleEvent 方法检测到流错误,但是当我检查 eventCode == NSStreamEventErrorOccurred 的条件时,似乎什么也没发生。我的连接代码如下:
NSString *hostString = ipField.text;
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)hostString, 10001, &readStream, &writeStream);
inputStream = (NSInputStream *)readStream;
outputStream = (NSOutputStream *)writeStream;
[inputStream setDelegate:self];
[outputStream setDelegate:self];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream open];
[outputStream open];
关于如何指定超时值或允许按钮在无法建立连接时触发关闭流的任何想法?