1

iPhoneでNSInputStream/NSOutputStreamを使ってTCP通信を行うことはできますか? Apple がドキュメントで提供している例では [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];

ただし、これには 2 つの問題があります。

1) iStream 部分だけを実行すると、デリゲートで呼び出されたイベントは表示されません。

2) outputStreamWithURL は、CFWriteStreamSetProperty 内からの不可解な「EXC_BAD_ACCESS」エラー メッセージで失敗します。

4

1 に答える 1

1

getStreamsStreamsToHostこの Apple の記事では、iOSでの実装方法について説明しています

NSHost を使用しない TCP 接続に NSStreams を使用する

于 2012-07-26T20:13:56.780 に答える