Сообщение nsstreameventerroroccurrored приходит слишком поздно

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

Мы разрабатываем клиент-серверное приложение. Клиент (приложение для iPhone) и сервер (рабочий стол) обмениваются данными через Wi-Fi. Мы используем TCP / IP.

Каждые пять секунд клиентское приложение отправляет на сервер специальное сообщение (мы называем это ping, но это наш ping). Мы должны протестировать поведение клиента при разрыве соединения с сервером. Я отключаю Wi-Fi на своем рабочем столе. Мы ожидаем получить уведомление о том, что ссылка разорвана через небольшой промежуток времени. Вместо этого уведомление приходит через 4 или 5 минут (клиент использует класс NSStream, поэтому в нем написано «nsstreameventerroroccurrored»).

  1. Почему оно приходит так поздно?

  2. Как я могу получить уведомление раньше? (скажем, через 5 секунд)

Спасибо.

Комментарии:

1. попробуйте отправить сообщение на вызывающий сервер, [myOutputStream write:buffer maxLength:length]; если сервер не работает, операция должна завершиться неудачей, чтобы вы могли получить информацию о вызове [myOutputStream streamError] . Не уверен, что это сработает.

2. Я уже использую write:maxLength: в своем ping. Так что это действительно не работает.

3. Вы проверили возвращаемое значение write:maxLength?

4. Да, я сделал. Если соединение разорвано, оно возвращает положительное число.