NSStream TCP Keep-alive iOS

Я написал этот код для настройки потока с сервером:

-(void)streamOpenWithIp:(NSString *)ip withPortNumber:(int)portNumber;
{
       CFReadStreamRef readStream;
       CFWriteStreamRef writeStream;
       CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, (__bridge CFStringRef)ip, portNumber, &readStream, &writeStream);

       if(readStream && writeStream)
       {
            CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
            CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);

            //Setup inpustream
            inputStream = (__bridge NSInputStream *)readStream;
            [inputStream setDelegate:self];
            [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
            [inputStream open];

            //Setup outputstream
            outputStream = (__bridge NSOutputStream *)writeStream;
            [outputStream setDelegate:self];
            [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
            [outputStream open];
       }
}

Я могу подключиться к серверу и отправить получить данные. Но я хочу проверить, есть ли еще соединение. Если я отсоединяю кабель от маршрутизатора Wi-Fi, я все еще могу отправлять данные в потоке, и никаких ошибок не произошло.

Вы можете решить эту проблему на уровне приложения, используя таймер для отправки какого-либо сообщения и проверки получения чего-либо обратно. Но вы можете решить эту проблему и с помощью технологии Keep-Alive TCP на более низком уровне.

Как мне реализовать это с NSStream? Как я могу установить интервал проверки?

Я предполагаю, что вы получаете NSStreamEventErrorOcurred, когда поток не работает, проверяя его с помощью TCP Keep-Alive?

Я проверил этот пост, но я могуt понять это:Поддержание соединения сокета в iOS

Спасибо за вашу помощь!

Ответы на вопрос(3)

Ваш ответ на вопрос