我有一个应用程序是套接字服务器应用程序。我想在iOS上使用它(不是app store)。我试图像苹果文档中提到的那样绑定我的C ++程序的本机套接字,但是没有发生任何事情。
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。
我发布的代码在我的app代理“applicationDidEnterBackground”中,我在.plist文件中启用了“Voice over IP”。
然而,这似乎很奇怪 - 如果我在应用程序处于后台时对侦听套接字的IP地址执行netcat - 它不会唤醒并调用我在Qt中定义的“接受连接”插槽应用程序。但是,只要我将应用程序带回前台,就会调用插槽。
我做错了什么?在创建流对之前,我是否需要连接套接字?
答案 0 :(得分:0)
是的,在应用程序转到后台之前,套接字需要连接到服务器,否则iOS将无法保持“活着”
您无法使用侦听套接字来实现VOIP后台功能。