首页 > 代码库 > GCDAsyncSocket~
GCDAsyncSocket~
第三方的一个socket通信框架,原生的一般用的人比较少,优秀第三方可以提升开发效率,减少开发中出现错误的几率
下面的代码是实例化一个socket对象,并为其指定代理,指定代理方法运行的队列
_socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)];
下面的代码是指定一个主机名,一个端口号,进行链接
[_socket connectToHost:hostName onPort:port error:&error];
连接成功之后就可以进行socket通信了
为当前的控制器指定GCDAsyncSocket代理协议,并实现
- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
- (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag
见其名知其意,其实代理方法有很多,只不过这三个比较常用而已
一般在didWriteDataWithTag会调用一次[_socket readDataWithTimeout:-1 tag:tag];方法去读取数据(注意,didWrite是完成时,已经将数据写给了服务器)
而且根据tag值我们还可以判断出是哪一个或者哪一类发送的数据对应的返回数据
还有一个需要注意的地方就是,如果接收到数据后要刷新View,你需要看一下你接收到数据那个方法所在的是不是主线程,如果不是主线程需要进行切换,只有在主线程里才能更新UI
GCDAsyncSocket~
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。