首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏酷酷的哀殿

    GCDAsyncSocket 在 iOS15 出现 - 崩溃排查笔记

    简介 GCDAsyncSocket 是一个 TCP 库。 通常情况下,我们可以通过下面的代码创建一个 GCDAsyncSocket 的实例 socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue GCDAsyncSocket 通过 unscheduleCFStreams: 函数实现反注册 + (void)unscheduleCFStreams:(GCDAsyncSocket *)asyncSocket 的实例被释放时,会通过下面的代码[4]将让 类GCDAsyncSocket 在 cfstreamThread 线程执行 + (void)unscheduleCFStreams:(GCDAsyncSocket ,避免调用 -[GCDAsyncSocket dealloc] 2、先主动调用-[GCDAsyncSocket disconnect],再释放GCDAsyncSocket的实例 3、通过调整withObject

    4.5K71编辑于 2022-03-14
  • 来自专栏移动端周边技术扩展

    Swift基于CocoaAsyncSocket开发Socket通信

    override init() { super.init() clientSocket = GCDAsyncSocket() clientSocket.delegate = self (), withTimeout: -1, tag: 0) } 发送与接收数据代理回调 // 服务器接收到数据 -->> 接收到数据后抛出去 func socket(_ sock: GCDAsyncSocket (), withTimeout: -1, tag: 0) socketDidReadData(data: data, tag: tag) } func socket(_ sock: GCDAsyncSocket , didWriteDataWithTag tag: Int) -> Void { clientSocket.readData(to: GCDAsyncSocket.crlfData(), withTimeout : -1, tag: 0) } // 断开连接 func socketDidDisconnect(_ sock: GCDAsyncSocket, withError err: Error?)

    2.1K30发布于 2018-06-13
  • 来自专栏iOS逆向与安全

    进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)

    基于GCDAsyncSocket提供的解决方案 基于 CFSocket、GCD 进行的封装,支持 TCP 和 UDP platform :ios, '8.0' inhibit_all_warnings! 1.2 serverSocket #import <GCDAsyncSocket.h> @interface ViewController () { GCDAsyncSocket *_serverSocket 1.3 clientSocket #import <GCDAsyncSocket.h> @interface ViewController () { GCDAsyncSocket *_clientSocket :dispatch_get_main_queue()];//这种是在主线程中运行 //_socket = [[GCDAsyncSocket alloc] initWithDelegate:self } #pragma mark 读取数据 -(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag

    2.5K51发布于 2021-01-18
  • 来自专栏雨尘分享

    TCP 看我就够了

    在这里我就着重讲下IOS端的使用和问题 使用到的是CocoaAsyncSocket 中的GCDAsyncSocket (当然CocoaAsyncSocket里也有创建UDP的就不累述) 创建链接 以及对应的回调 目前只想起来这些,至于其他问题,可以留言给我,我们公共探讨,也可以加我的Q:719967870,下面我贴出 基于GCDAsyncSocket封装的单例大家可以直接使用 // TcpClient.h #import <Foundation/Foundation.h> #import "GCDAsyncSocket.h" #import "ITcpClient.h" 哈哈 - (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port { DLog CRLFData] withTimeout:-1 tag:0]; } - (void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)

    1.7K50发布于 2018-06-07
  • 来自专栏iOS逆向与安全

    iOS进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)

    基于GCDAsyncSocket提供的解决方案 基于 CFSocket、GCD 进行的封装,支持 TCP 和 UDP platform :ios, '8.0' inhibit_all_warnings > @interface ViewController () { GCDAsyncSocket *_serverSocket; } @property(strong,nonatomic)NSMutableArray NSMutableArray array]; //创建服务端的socket,注意这里的是初始化的同时已经指定了delegate _serverSocket = [[GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{ //sock为服务端的socket,服务端的socket只负责客户端的连接,不负责数据的读取 这里读取数据 [newSocket readDataWithTimeout:-1 tag:100]; } #pragma mark 服务器写数据给客户端 -(void)socket:(GCDAsyncSocket

    2.4K30发布于 2021-08-25
  • 来自专栏音视频进阶之旅

    音视频开发(一)-流媒体数据传输RTSP

    "; @interface RTSPConnection() <GCDAsyncSocketDelegate> { dispatch_queue_t socketQueue; GCDAsyncSocket init]) { socketQueue = dispatch_queue_create("tcpSocketQueue", NULL); clientSocket = [[GCDAsyncSocket Connection: %@", error.localizedDescription); } } #pragma mard socketDelegate - (void)socket:(GCDAsyncSocket @"didConnectToHost, host: %@, port: %d", host, port); [self doOption]; } - (void)socket:(GCDAsyncSocket err { NSLog(@"socketDidDisconnect: %@", err.localizedDescription); } - (NSTimeInterval)socket:(GCDAsyncSocket

    1.2K30编辑于 2022-09-24
  • 来自专栏移动端周边技术扩展

    https/tcp ssh/tls

    securityPolicy.pinnedCertificates = [NSSet setWithObjects:certData, nil]; return securityPolicy; } GCDAsyncSocket 中 TLS调整 正对自建证书使用以下方案 stackoverflow回答 非自建证书 用以下替换 - (void)socket:(GCDAsyncSocket *)sock didReceiveTrust

    88740发布于 2018-06-14
  • 来自专栏iOS逆向与安全

    iOS tweak 集成CocoaAsyncSocket(建连、断开、重连、心跳、通用请求)【应用场景:微信机器人】

    [self socketBeginReadData];// 修改为连接建立之后 就立马监听 } 如果想要实时监听服务端的消息推送就可以修改为:连接一旦建立就开始读 - (void)socket:(GCDAsyncSocket - (void)socketBeginReadData { NSLog(@"socketBeginReadData"); [self.socket readDataToData:[GCDAsyncSocket CRLFData] withTimeout:-1 maxLength:0 tag:0];//考虑使用-1 } 2.2 业务逻辑的处理 - (void)socket:(GCDAsyncSocket

    1.3K20发布于 2021-03-08
  • 来自专栏joealzhou

    iOS自建IM相关

    一、涉及到的第三方库 1、GCDAsyncSocket GCDAsyncSocket是一个封装好的,帮助开发者完成socket的通信过程。数据上传以及接收。 创建scoket对象后,遵循它的代理,里面有一个最重要的方法: 接受解析服务器数据 - (void)socket:(GCDAsyncSocket *)socket didReadData:(NSData

    1.1K30发布于 2021-06-02
  • 来自专栏移动端开发

    Socket学习总结系列(二) -- CocoaAsyncSocket

    这里大概说一下:     GCDAsyncSocket         是基于TCP协议写的                                   GCDAsyncUdpSocket     认识一下CocoaAsyncSocket的源码 (建议先文章最后下载Demo)      下面我们开始整理分析CocoaAsyncSocket的GCDAsyncSocket部分的源码,这部分代码量在九千多行 ,我们这一次按照它.h的可以给外面调用的方法开始认识它的源码,具体的每一行的注释你可以下载Demo去看Demo中GCDAsyncSocket部分的源码,上面给了很详细的注释,然后我们这里就是按照.h的方法去总结 在这里就调用了我们GCDAsyncSocket中接收消息的代理方法: ?      

    1.6K70发布于 2018-01-15
  • 来自专栏全栈程序员必看

    Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)

    假设你想做基于套接字的IO,我仅仅能推荐GCDAsyncSocket。我曾经尝试套接字编程iQuassel项目有几个原因,主要由于你必须使用Carbon取代Cocoa。 GCDAsyncSocket也有不错的优势,您能够非常easy地在一个线程中进行网络协议解析,避免堵塞UI线程。

    1.4K10编辑于 2022-07-06
  • 来自专栏sunsky

    socket.io实践干货

    Polling)机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码 socket.io 是跨平台的,可以实现多平台的即时通讯 由于 iOS 端进行 socket 编程主要使用 GCDAsyncSocket 地址 https://github.com/HOWIE-CH/-You-guess-I-painted-_socket 七、其他 使用 socket.io,感觉传输数据很方便,api 简单,也没有像 GCDAsyncSocket

    1.7K30发布于 2020-08-20
  • 来自专栏HelloCode开发者学习平台

    iOS进阶难,“有经验的iOS开发”亲身经历告诉你如何进阶!

    如何进阶 在开发的过程中加强这些方面的学习,比如并发编程、逆向工程、设计模式、Runtime、Runloop等,然后再把常用的一些开源框架深入研究一下; 挑选一个常用源码(AF、SD、YYKit、GCDAsyncSocket

    49110编辑于 2023-03-23
  • 来自专栏谈补锅

    iOS之ProtocolBuffer搭建和示例demo

    ://github.com/xiaotanit/Tan_ProtocolBuffer 原文链接:http://www.cnblogs.com/tandaxia/p/6181534.html 关于使用GCDAsyncSocket

    1.8K30发布于 2018-09-27
  • 来自专栏HelloCode开发者学习平台

    iOS-TCP网络框架

    主要代码如下: 这边因为需要添加重连操作, 所以我在GCDAsyncSocket的基础上又封装了一下, 但总体代码不多, 应该比较好理解. 这里需要注意的是GCDAsyncSocket的连接接口(connectToHost: onPort: error:)是同步调用的, 慢网情况下可能会阻塞线程一段时间, 所以这里我单开了一个线程来做连接操作

    79810编辑于 2023-03-23
  • 来自专栏移动端开发

    常用开发技巧系列(四)

    遇到这个问题,在你的网络不稳定的时候,当Socket链接的时候会出现Crash,解决的办法在网上查找之后又两个常见的方案,自己最近也是在看这个CocoaAsyncSocket的源码,最主要的也就是常见的GCDAsyncSocket

    1.4K90发布于 2018-01-15
  • 来自专栏Guangdong Qi

    iOS开发常用之网络、网页

    GCDAsyncSocket - GCDAsyncSocket,不错的Demo。 Just - 小而美的HTTP类。功能简单,直接,完整且健壮性高 - swift。

    7K10发布于 2018-12-14
  • 来自专栏即时通讯技术

    手把手教你为基于Netty的IM生成自签名SSL/TLS证书

    此处填服务器IP地址" forKey:GCDAsyncSocketSSLPeerName];         // 如果不是自签名证书,而是权威证书颁发机构注册申请的证书,这个settings字典可不传(将使用GCDAsyncSocket

    1.6K30编辑于 2023-02-24
  • 来自专栏谈补锅

    CocoaAsyncSocket + Protobuf 处理粘包和拆包问题

    首先描述下碰到的问题:   1、服务器发送内容很长的数据过来的时候,GCDAsyncSocket监听收到的一个包解析不了,一直要接收好几个包拼接才是这条数据的完整包,即所谓的拆包/断包;   2、服务器快速发送多条数据过来 /** 监听来自服务器的消息代理方法 */ - (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long) saveReceiveInfo:(ChatMsg *)obj{ //... } --------------------- print log test start ---------------------  在GCDAsyncSocket

    2K40发布于 2018-09-27
领券