美文网首页
GCDAsySocket

GCDAsySocket

作者: DoBetter1 | 来源:发表于2020-02-09 13:31 被阅读0次

1. 通过pod导入

pod 'CocoaAsyncSocket'

2. 创建GCDAsySocket:

self.socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(0, 0)]; 

注意:这里的并发队列,最好是写自己并发队列,这个队列将影响delegate回调,里面是同步函数,为了保证数据先后顺序不变。

3. 连接

[self.socket connectToHost:@"127.0.0.1" onPort:8090 withTimeout:-1 error:&error];

4.代理方法

//已经连接到服务器
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(nonnull NSString *)host port:(uint16_t)port{
    NSLog(@"连接成功 : %@---%d",host,port);
    // -1 表示无限时长 ,永久不失效,tag标识
    [self.socket readDataWithTimeout:-1 tag:10086];
}

// 连接断开
- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{
    NSLog(@"断开 socket连接 原因:%@",err);
}

//已经接收服务器返回来的数据
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
    NSLog(@"接收到tag = %ld : %ld 长度的数据",tag,data.length);
    [self.socket readDataWithTimeout:-1 tag:10086];
}

//消息发送成功 代理函数 向服务器 发送消息
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{
    NSLog(@"%ld 发送数据成功",tag);
}

注意:连接成功或者收到消息,必须开始read,否则将无法收到消息,不read的话,缓存区将会被关闭。

相关文章

  • GCDAsySocket

    1. 通过pod导入 2. 创建GCDAsySocket: 注意:这里的并发队列,最好是写自己并发队列,这个队列将...

  • IOS框架使用:GCDAsySocket

    原创:知识进阶型文章创作不易,请珍惜,之后会持续更新,不断完善个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈...

  • IOS框架:GCDAsySocket的源码解析

    原创:知识进阶型文章创作不易,请珍惜,之后会持续更新,不断完善个人比较喜欢做笔记和写总结,毕竟好记性不如烂笔头哈哈...

网友评论

      本文标题:GCDAsySocket

      本文链接:https://www.haomeiwen.com/subject/nlqwxhtx.html