1

是否可以在 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”错误消息

4

1 回答 1

1

这篇 Apple 文章解释了如何getStreamsStreamsToHost在 iOS上实现

在没有 NSHost 的情况下使用 NSStreams 进行 TCP 连接

于 2012-07-26T20:13:56.780 回答