2009-04-01 2 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 클라이언트 응용 프로그램입니다 기능)

실제로이 함수에서 경고 팝업이 나타나 전화가 걸려 있는지 확인했습니다. USB로 연결되어있는 동안 iphone/itouch가 잠자기 상태가 아니기 때문에 디버깅하기가 더 어려워졌습니다.

제 질문은 어떻게 충돌을 일으킬 수 있습니까?

답변

3

서버를 완전히 제어하지 않는 한, 임의의 시간 동안 잠자기 후 소켓을 "깨우기"위해 수행 할 수있는 작업은 없습니다. 원격 서버는 아마도 제한 시간 후에 연결을 닫았을 것입니다 - 어쨌든 가정해야합니다.

연결을 다시 시작하고 상태를 처음부터 서버와 동기화해야합니다.

관련 문제