0

私はObjective Cとiosの開発が初めてです。私は通常、Android アプリを Java でプログラミングし、常に onPause 呼び出しを使用してソケットを閉じました。しかし、applicationWillResignActive の下でクローズ ソケット メソッドを呼び出すと、ストリーム リスナーとの通信が失われ、入力ストリームと出力ストリームを閉じることができません。実際、アプリがサーバーに接続されていても、両方のストリームのストリーム ステータスに NSStreamStatusNotOpen または 0 が表示されます。何か案は?

ありがとうございました

編集

SocketHandler.m クラスの Connect メソッド:

  -(void)connect:(int *)port ipAddress:(NSString *)ipAddress
{
        CFReadStreamRef readStream;
        CFWriteStreamRef writeStream;
        CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)ipAddress, port, &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];
        NSLog(@"input stream id %i", inputStream);  
}

-(void)disconnect{

    NSLog(@"disconnect method called");

    socketStatus = [outputStream streamStatus];
    int status = socketStatus;
    NSLog(@"Stream Status is %i", status);

    if (status == 2) {
        [inputStream close];
        [outputStream close];
        NSLog(@"Socket Closed");
    }



}
4

1 に答える 1