2009-04-01 14 views
0

..et mon application est toujours en cours d'exécution!Comment puis-je récupérer une connexion TCP Socket après que l'iPhone se bloque

Il y a ce question à propos de ce qui se passe quand il va dormir + se réveille. Je sais qu'il appelle:

- (void)AppDidBecomeActive:(NSNotification *)notification { 

    if(jsocket){ 
     [jsocket release]; 
    } 
    jsocket = [[johnsocket alloc] init]; 

    if(![jsocket connectViaSocket:(NSString*)ipaddress port:@"3660"]){ 
     //port 3660 is the XML port!!! good thing to know... 3663 is the binary protocol port. yay! 
     NSLog(@"error connecting from rooms page"); 
    } 
} 

(Note:.. J'utilise Asyncsocket.m, qui est une grande classe qui aident à gérer les prises et autres .. c'est ce que jsocket est une instance de Ceci est une application client tcp)

J'ai effectivement eu un popup d'alerte dans cette fonction pour m'assurer qu'il était appelé .. vous voyez, l'iphone/itouch ne va pas dormir lorsqu'il est branché sur USB, ce qui rend la situation plus difficile à déboguer.

Donc, ma question est, comment puis-je le faire ne pas tomber en panne?

Répondre

3

À moins que vous n'ayez un contrôle total sur le serveur, vous ne pouvez rien faire pour simplement «réveiller» un socket après une heure de veille. le serveur distant aura probablement fermé la connexion après un délai d'attente - c'est ce que vous devez assumer de toute façon.

Vous devrez réinitialiser la connexion et synchroniser votre état avec le serveur à partir de zéro.