erreur SIGPIPE à iOS4 lorsque l'application est en cours d'exécution écran de fond et verrouillage

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

Question

J'utilise socket BSD dans mon application pour envoyer et recevoir des données sur iphone4 (iOS4.1), il y a trois situations dans mon application:

  1. application est en cours d'exécution dans les écluses de premier plan et l'écran, il est très bien.
  2. application est en cours d'exécution en arrière-plan et le verrouillage does't écran, il est très bien aussi (j'utiliser NSStream pour envoyer et recevoir des données pour l'application de garder en vie en arrière-plan, il fonctionne très bien.)
  3. application est en cours d'exécution en arrière-plan et serrures écran, l'application fonctionne bien, mais toujours obtenir l'erreur SIGPIPE lorsque vous essayez d'application à l'appel sendto () ou envoyer () par socket TCP ou UDP.

Je recherche beaucoup mais je reçois rien d'utile, de je sais ce que SIGPIPE est, et je utilisation setsockopt (chaussette, SOL_SOCKET, SO_NOSIGPIPE, (void *) et sur, sizeof (int)) pour éviter la sortie de l'application anormale. mais je ne sais toujours pas pourquoi cette erreur que dans la situation 3 et comment envoyer des données normalement par prise bsd dans cette situation.


J'ai essayer de renouveler et reconnectez mais il does't travail, il arrive encore erreur SIGPIPE.   Je pense que peut-être que tous les sockets BSD ne peuvent pas avoir accès interne dans la situation 3 (Pour autant que nous savons que socket BSD ne peut pas activer la connexion wifi ou EDGE dans iOS), Tout le monde peut me aider ou me donner quelques suggestions? et désolé pour mon Broken English ^. ^, Merci beaucoup.

Était-ce utile?

La solution

Je recherche sur Google et a trouvé ma propre question 10 mois avant, ce qui est intéressant. J'avais déjà une solution pour garder l'application en cours d'exécution en arrière-plan, et setsockopt (chaussette, SOL_SOCKET, SO_NOSIGPIPE, (void *) et sur, sizeof (int)) est utile qui ignorera erreur sigpipe 13.

cette erreur se produit lorsque la socket déjà perdu la connexion physique et essayez encore des données d'écriture, via Wifi, 3G ou accessoires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top