2009-04-01 4 views
0

..私のアプリはまだ動作しています!iPhoneがスリープ状態になった後にTCPソケットの接続を回復するにはどうすればいいですか?

これは、睡眠に入って+起きたときに起こることについてのquestionです。私はそれを呼び出すことを知っている:

- (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"); 
    } 
} 

(注:私はAsyncsocket.mを使用しています、それはjsocketがのインスタンスであるものだ...ソケットと、このような管理を支援偉大なクラスです。これは、TCPクライアントアプリケーションです。)

私は実際に、この機能では、それが呼び出されていることを確認するための警告ポップアップを持っていた。あなたは、iphone/itouchはUSBに接続している間スリープ状態にはならず、これをデバッグするのがより困難な状況になっている。

私の質問は、どうすればクラッシュしないのですか?

答えて

3

サーバを完全に制御できない限り、スリープ状態になった後にソケットを単に "起床"することはできません。リモートサーバはおそらくタイムアウトの後に接続を閉じたでしょう - それはあなたがとにかく仮定すべきものです。

接続を再開して、状態をサーバーと最初から同期させる必要があります。

関連する問題