GCDAsyncSocket.
来源:互联网 发布:淘宝没销量怎么办 编辑:程序博客网 时间:2024/05/18 21:43
1.这是TCP的使用的Socket包,无论怎么样都要先connect.
-(void)socketConnectHost{
if (_socket == nil) {
dispatch_queue_t mainQueue = dispatch_get_main_queue();
_socket = [[GCDAsyncSocketalloc] initWithDelegate:selfdelegateQueue:mainQueue];
NSError *err = nil;
[selfconnectToHost:kConf_Server_AddrandPort:kConf_Server_PORT];
if(![_socketconnectToHost:kConf_Server_Addr onPort:kConf_Server_PORTerror:&err])
{
NSLog(@"Error: %@", err);
}
}else{
[selfconnectToHost:kConf_Server_AddrandPort:kConf_Server_PORT];
}
}
只有- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{}成功之后,才能收发socket.
收socket:- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{}
发socket: [_socketwriteData:data withTimeout:-1tag:1];
断开连接会调用:- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{}
当然一般情况下我们在socket断开时要重连.重连时间,一般是服务器和客户端商量好的.在断开之后,在:- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{}使用NSTimer设置重连,重连成功,停止timer.
2.当我们要在后台接收socket时,可以在targets->capabilities->background modes->Voice Over Ip 打开VOIP.
(1),可以
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
{
//后台挂起voip
[asyncSocket performBlock:^{
[asyncSocket enableBackgroundingOnSocket];
}];
(2),也可以在appdelegate.m里面设置
- (void)applicationDidEnterBackground:(UIApplication *)application{
UIApplication *app = [UIApplication sharedApplication];
__block UIBackgroundTaskIdentifier bgTask;
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
dispatch_async(dispatch_get_main_queue(),^{
if(bgTask != UIBackgroundTaskInvalid){
bgTask = UIBackgroundTaskInvalid;
}
});
}];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),^{
dispatch_async(dispatch_get_main_queue(), ^{
if(bgTask != UIBackgroundTaskInvalid) {
bgTask = UIBackgroundTaskInvalid; }
});
});
}
- GCDAsyncSocket
- GCDAsyncSocket
- GCDAsyncSocket.
- GCDAsyncSocket
- GCDAsyncSocket使用
- GCDAsyncSocket 笔记
- iOS GCDAsyncSocket
- GCDAsyncSocket使用
- 介绍GCDAsyncSocket
- GCDAsyncSocket使用
- IOS socket GCDAsyncSocket
- IOS socket GCDAsyncSocket
- 细致理解GCDAsyncSocket用法
- IOS socket GCDAsyncSocket
- GCDAsyncSocket的使用
- 深入介绍GCDAsyncSocket原理
- GCDAsyncSocket的使用
- GCDAsyncSocket的使用
- android scroller
- C++this指针
- 如何解释营销能力与技术能力是正交的
- C语言单链表实现19个功能完全详解
- How to add a custom build step to MSBuild Projects
- GCDAsyncSocket.
- DNS解析过程简析
- 有5个字符串,要求对他们按由小到大 string
- ARM Linux启动流程分析——内核自解压阶段
- 记梦--物道奇缘
- BestCoder Round #35(DZY Loves Topological Sorting-堆+贪心)
- 黑马程序员——Java基础知识——IO(Properties、打印流、IO其他类、字符编码)
- 设置顶部系统栏颜色和actionbar颜色相同
- Junit框架使用(1)--基本使用