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];
タイムアウト値を指定する方法や、接続が確立できない場合にボタンでストリームの終了をトリガーする方法についてのアイデアはありますか?