소켓 서버 애플리케이션 인 애플리케이션이 있습니다. 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 앱. 그러나 앱을 포 그라운드로 가져 오면 슬롯이 호출됩니다.
내가 뭘 잘못하고 있니? 스트림 쌍을 만들기 전에 이미 소켓을 연결해야합니까?