是否可以在 iPhone 上使用 NSInputStream/NSOutputStream 进行 TCP 通信?苹果在其文档中提供的示例使用 [NSStream getStreamsToHost] 并且 iPhone 不支持该示例。我看过其他使用 CFStream 设置套接字然后桥接到 NSStream 的帖子,这是唯一受支持的方式吗?
根据文档,理论上应该是这样的:
//input stream
NSURL *url = [[NSURL alloc] initWithString:@"10.252.1.1:8080"];
iStream = [NSInputStream inputStreamWithURL:url];
[iStream setDelegate:self];
[iStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[iStream open];
oStream = [NSOutputStream outputStreamWithURL:url append:true];
[oStream setDelegate:self];
[oStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[oStream open];
但是,这样做有两个问题:
1)如果我只做 iStream 部分,我永远不会看到我的委托调用任何事件。
2) outputStreamWithURL 失败并显示来自 CFWriteStreamSetProperty 的神秘“EXC_BAD_ACCESS”错误消息