2014-03-31 1 views
1

소켓 서버 애플리케이션 인 애플리케이션이 있습니다. iOS (앱 스토어가 아님)에서 사용하고 싶습니다. C++ 프로그램의 네이티브 소켓을 애플 문서에 언급 된 방식으로 바인드하려고했지만 아무 일도 일어나지 않았다.iOS Voip 웨이크 업

C++ 프로그램은 QTcpServer와 함께 신호/슬롯을 사용합니다. 다음과 같은 코드가 있습니다.

driver = ProxyDriver::getInstance(5150); 
    NSLog(@"Socket descriptor %i" , driver->socketDescriptor()); 
    CFReadStreamRef readStream; 
    CFWriteStreamRef writeStream; 

CFStreamCreatePairWithSocket (kCFAllocatorDefault, driver->socketDescriptor(), &readStream, &writeStream); 
CFReadStreamSetProperty(readStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 
CFWriteStreamSetProperty(writeStream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP); 

driver-> socketDescriptor() 내 QTcpServer의 수신 대기 소켓 인 int를 반환합니다.

내가 게시 한 코드는 내 응용 프로그램 대리인 "applicationDidEnterBackground"에 있으며 내 .plist 파일에서 "Voice over IP"를 사용하도록 설정했습니다.

그러나 이상하게 보입니다. 응용 프로그램이 백그라운드에서 수신 대기 소켓의 IP 주소로 netcat을 실행하면 깨어나지 않고 "accept connections"슬롯을 호출합니다. Qt 앱. 그러나 앱을 포 그라운드로 가져 오면 슬롯이 호출됩니다.

내가 뭘 잘못하고 있니? 스트림 쌍을 만들기 전에 이미 소켓을 연결해야합니까?

답변

0

예 소켓 달리 아이폰 OS 당신은 VOIP 배경 기능을 청취 소켓을 사용할 수 없습니다

"생존"을 유지하지 않을 것이다, 앱 배경에 가기 전에 서버에 연결해야합니다.

관련 문제