Ошибка SigPipe в iOS4 Когда приложение работает фона и экран блокировки

StackOverflow https://stackoverflow.com/questions/4085368

Вопрос

Я использую розетку BSD в моем приложении для отправки и получения данных на iPhone4 (iOS4.1), в моем приложении три ситуации:

  1. Приложение работает на переднем плане и замках экрана, все в порядке.
  2. Приложение работает в фоновом режиме и экран не заблокирован, тоже нормально (я использую NSStream для отправки и получения данных для сохранения приложения в живописеке в фоновом режиме, он работает нормально.)
  3. Приложение работает в фоновом режиме и замки экрана, приложение работает нормально, но всегда получают ошибку SIGPIPE, когда приложение пытается вызовать SendTo () или отправить () через разъем UDP или TCP.

Я ищу много, но ничего не полезно, от здесь Я знаю, что такое SIGPIPE, и я использую Setockopt (Sock, Sol_socket, SO_NOSIGPIPE, (void *) & at, sizeof (int)), чтобы избежать выхода приложения ненормально. Но я до сих пор не знаю, почему эта ошибка произошла только в ситуации 3 и как передавать данные обычно через розетку BSD в этой ситуации.


Я пытаюсь возобновить и снова подключить, но это не работает, он все еще получил ошибку SigPipe. Я думаю, что может быть, что все розетки BSD не могут получить внутренний доступ в ситуации 3 (насколько мы знаем, что розетка BSD не может активировать Wi-Fi или Edge Connection в iOS), любой может помочь мне или дать мне несколько предложений? И извините за мой сломанный английский ^. ^, Большое спасибо.

Это было полезно?

Решение

Я ищу в Google и нашел свой собственный вопрос за 10 месяцев до того, что это интересно. У меня уже было решение для приложения.

Эта ошибка происходит, когда сокет уже потерял физическое соединение и по-прежнему пытается записать данные, через WiFi, 3G или аксессуар.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top