ユーザーをサーブに接続するアプリケーションがあります。ユーザーはホストに接続して、IP アドレスを挿入して通信したり、NSStream を使用して通信したりできます。接続ボタンを押すと、ホストへの接続が開始され、ユーザーはメッセージを送受信できます。
切断ボタンを押すのを聞かないように、ユーザーがサーバーから切断できるようにしたいと考えています。問題は、ストリームを正常に閉じることができないことです。
これは私の現在の実装です:
// Create connection "Connect Button"
- (void)initNetworkCommunication:(UIViewController *)sender {
CFReadStreamRef readStream;
CFWriteStreamRef writeStream;
CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"123.456.789.123", 80, &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];
controller = sender;
}
// Stop connection "Disconnect Button"
- (void)stopNetworkConnection {
[inputStream close];
[outputStream close];
[inputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream release];
[outputStream release];
inputStream = nil;
outputStream = nil;
NSLog(@"Disconnect from stream");
}
操作の流れは次のとおりです。
- ユーザーは有効な IP アドレスを挿入します。
- ユーザーは「接続ボタン」を押します。
- すべてが正常に機能し、接続が確立され、ユーザーはメッセージを送受信できます。
- ユーザーが「切断ボタン」を押しても、ユーザーはメッセージを受信しません。
- ユーザーが「接続ボタン」を押したが、接続できなくなった
この解決策を試しましたが、うまくいきませんでした:
助けてくれてありがとう