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適配)