程序后台保活-接收网络数据
2012-02-01 14:45
204 查看
- (void)createSocket {
socketClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
NSLog(@"socketClient-------%d", socketClient);
if (socketClient >= 0) {
CFReadStreamRef readStream = NULL;
CFStreamCreatePairWithSocket(kCFAllocatorDefault, socketClient, &readStream, nil);
self.inStream = (NSInputStream *)readStream;
[inStream setDelegate:self];
[inStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
if ([inStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]) {
NSLog(@"inStream setVoipProperty OK");
[inStream open];
...(doing something here)
}
}
}
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {
case NSStreamEventOpenCompleted: {
NSLog(@"Open Completed");
} break;
case NSStreamEventHasBytesAvailable: {
NSLog(@"Read available");
} break;
case NSStreamEventHasSpaceAvailable: {
NSLog(@"NSStreamEventHasSpaceAvailable");
} break;
case NSStreamEventErrorOccurred: {
NSLog(@"NSStreamEventErrorOccurred");
} break;
case NSStreamEventEndEncountered: {
NSLog(@"NSStreamEventEndEncountered");
} break;
default: {
} break;
}
}
同时设置plist里的Required background modes选项为“App provides Voice over IP services”
socketClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
NSLog(@"socketClient-------%d", socketClient);
if (socketClient >= 0) {
CFReadStreamRef readStream = NULL;
CFStreamCreatePairWithSocket(kCFAllocatorDefault, socketClient, &readStream, nil);
self.inStream = (NSInputStream *)readStream;
[inStream setDelegate:self];
[inStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
if ([inStream setProperty:NSStreamNetworkServiceTypeVoIP forKey:NSStreamNetworkServiceType]) {
NSLog(@"inStream setVoipProperty OK");
[inStream open];
...(doing something here)
}
}
}
- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode
{
switch (eventCode) {
case NSStreamEventOpenCompleted: {
NSLog(@"Open Completed");
} break;
case NSStreamEventHasBytesAvailable: {
NSLog(@"Read available");
} break;
case NSStreamEventHasSpaceAvailable: {
NSLog(@"NSStreamEventHasSpaceAvailable");
} break;
case NSStreamEventErrorOccurred: {
NSLog(@"NSStreamEventErrorOccurred");
} break;
case NSStreamEventEndEncountered: {
NSLog(@"NSStreamEventEndEncountered");
} break;
default: {
} break;
}
}
同时设置plist里的Required background modes选项为“App provides Voice over IP services”
相关文章推荐
- 微信小程序 -- 后台接收数据为json
- SqlBulkCopy导入数据时:在从服务器接收结果时发生传输级错误。(provider:TCP提供程序,error:0-提定的网络名不再可用)
- 今天遇到一个问题:在程序中加入的定时触发器,当时出现这样一个问题,触发器定时2秒,程序从后台查询数据经过复杂处理后时间超过了2秒,我查阅好些网络上说有可能触发器等待程序执行完毕后,在触发下一次,也有说
- SpringMVC后台程序接收ajax异步提交数据的实例
- 一个简单的接收网络数据程序
- udp网络程序-发送、接收数据
- ios中qq在进入后台的情况下为什么还能接收到数据
- 网络接收数据缓存机制的分析和改进
- 前台数据格式与后台接收格式总结
- 串口程序接收数据一段时间后出现乱码
- 网络——在网络上发送,接收数据
- 重新想象 Windows 8.1 Store Apps (91) - 后台任务的新特性: 下载和上传的新特性, 程序启动前预下载网络资源, 后台任务的其它新特性
- 【Python】udp网络程序-发送、接受数据
- iOS 蓝牙4.0(BLE)后台或者锁屏也可以接收数据的方法
- 拦截其它程序的网络数据封包
- 关于AJAX请求后台数据,接收后台返回的JSON数据,以及前台遍历json数据和append追加元素。
- SPI网络数据过滤程序
- 转载文章:Microsoft 将僵尸网络威胁智能分析程序引入云中以提供近实时数据
- Linux网络编程-UDP接收数据丢包解决方案
- iOS蓝牙4.0(BLE)-后台接收数据