iOS小技能:Socket基础知识
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情
前言
-
应用场景:app端集成CocoaAsyncSocket与服务端进行通信,利用实现机器人功能。
基于 CFSocket、GCD 进行的封装,支持 TCP 和 UDP。
-
即时通讯的大数据处理逻辑:多线程逐条处理,你也可以采用事务处理聊天记录大数据,但如果发生错误需要全部回滚。
创建NSBlockOperation 放到NSOperationQueue异步执行。
系统会自动将NSOperationQueue中的NSOperation取出,将取出的NSOperation封装的操作放到一个新的线程中执行。
-
注意事项:socket不推荐放在主队列
```objectivec [[GCDAsyncSocket alloc] initWithDelegate:delegate delegateQueue:dispatch_get_main_queue()];
```
推荐自定义一个串行队列。
I 知识储备
1.1 长连接
-
http请求:
每次更新数据都要向对应的端口发送一次请求,之后返回数据之后关闭连接
-
长连接
客户端和服务器一直连着,当有数据更新的时候,服务器会直接发给客户端,不需要客户端主动请求。(client 需要监听流的输入) ps:在这过程中,为了保证服务端和客户端一直是连接状态,客户端会定时不间断的发送心跳数据到服务器,表明还连接着,不然长时间没有数据更新,会断开连接,这样一直有心跳数据的时候,就会保证了连接没有中断,至于心跳数据的内容,就是前端后端共同商量的,和请求的数据是单独的。(通常采用nstimer)
-
1.2 tweak是什么?
tweak的实质就是ios平台的动态库。IOS平台上有两种形势的动态库,dylib与framework。Framework这种开发者用的比较多,而dylib这种就相对比较少一点,比如libsqlite.dylib,libz.dylib等。而tweak用的正是dylib这种形势的动态库。
越狱开发中,各种破解补丁的统称为Tweak。iOS tweak 基本上都依赖于cydia Substrate的动态库, Substrate是Cydia 作者Jay Freeman 的作品,它的主要功能是hook某个App修改代码,比如替换其中方法的实现;Cydia上的tweak都是基于Mobile Substrate实现的。 ```bash iPhone:~ root# cd /Library/MobileSubstrate/DynamicLibraries
```
我们可以在设备的/Library/MobileSubstrate/DynamicLibraries目录下查看手机上存在着的所有tweak。这个目录下除dylib外还存在着plist与bundle两种格式的文件,plist文件是用来标识该tweak的作用范围,而bundle是tweak所用到的资源文件。
II 案例:iOS tweak 集成CocoaAsyncSocket
建连、断开、重连、心跳、通用请求
see also
进程间的实时通讯方案: local socket(解决扩展和容器应用的实时通讯问题)
🍅 联系作者: iOS逆向(公号:iosrev)
🍅 作者简介:CSDN 博客专家认证🏆丨全站 Top 50、华为云云享专家认证🏆、iOS逆向公号号主
🍅 简历模板、技术互助。关注我,都给你。
- iOS小技能:UITableView的适配 (iOS10/iOS14/iOS16.0)
- iOS小技能:和uni-app、unity的融合方案
- iOS小技能:iOS15崩溃排查技巧(symbolicatecrash符号化分析问题、导出和隐藏符号)
- iOS小技能:【intercept the HTTP/HTTPS requests 】利用NSURLProtocol 拦截请求
- iOS小技能: tweak 集成CocoaAsyncSocket(建连、断开、重连、心跳、通用请求)
- iOS小技能:iOS13 证件扫描 & 文字识别API
- iOS小技能:集成下拉刷新控件 & 实现无感知上拉加载更多
- iOS小技能:代码触发button的点击事件、快速找到按钮action方法
- iOS小技能:拨号、发邮件、短信、应用间跳转
- iOS小技能:链式编程在iOS开发中的应用
- iOS小技能:iOS14 读取用户剪切板数据弹出提示的兼容方案
- iOS小技能:因境外IP无法访问导致 App 被拒的解决方案
- iOS小技能:RSA签名、验签、加密、解密的原理
- iOS小技能:Xcode14新特性(适配)
- iOS小技能:Socket基础知识
- iOS小技能:SKU视图搭建
- iOS小技能: 日历的使用(案例:两个时间的比较、获取最近30天的数据)
- iOS小技能:1. iOS 实现json数据提交 2. 对同一个URL的多次请求进行数据缓存 3. 检查网络状态
- iOS小技能:使用正则表达式对聊天记录的关键词进行监控
- iOS小技能:去掉/新增导航栏黑边(iOS13适配)