iOS小技能:Socket基礎知識

語言: CN / TW / HK

攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第23天,點擊查看活動詳情

前言

  1. 應用場景:app端集成CocoaAsyncSocket與服務端進行通信,利用實現機器人功能。

    基於 CFSocket、GCD 進行的封裝,支持 TCP 和 UDP。

  2. 即時通訊的大數據處理邏輯:多線程逐條處理,你也可以採用事務處理聊天記錄大數據,但如果發生錯誤需要全部回滾。

    創建NSBlockOperation 放到NSOperationQueue異步執行。

    系統會自動將NSOperationQueue中的NSOperation取出,將取出的NSOperation封裝的操作放到一個新的線程中執行。

  3. 注意事項:socket不推薦放在主隊列

```objectivec [[GCDAsyncSocket alloc] initWithDelegate:delegate delegateQueue:dispatch_get_main_queue()];

``` 推薦自定義一個串行隊列。 在這裏插入圖片描述

I 知識儲備

1.1 長連接

  • http請求:

    每次更新數據都要向對應的端口發送一次請求,之後返回數據之後關閉連接

  • 長連接

    客户端和服務器一直連着,當有數據更新的時候,服務器會直接發給客户端,不需要客户端主動請求。(client 需要監聽流的輸入) ps:在這過程中,為了保證服務端和客户端一直是連接狀態,客户端會定時不間斷的發送心跳數據到服務器,表明還連接着,不然長時間沒有數據更新,會斷開連接,這樣一直有心跳數據的時候,就會保證了連接沒有中斷,至於心跳數據的內容,就是前端後端共同商量的,和請求的數據是單獨的。(通常採用nstimer)

  • 短連接,並行連接,持久連接與長連接

    http://blog.csdn.net/z929118967/article/details/86494386

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所用到的資源文件。

those的安裝

http://blog.csdn.net/z929118967/article/details/77051246

II 案例:iOS tweak 集成CocoaAsyncSocket

建連、斷開、重連、心跳、通用請求

【應用場景:微信機器人】

see also

進程間的實時通訊方案: local socket(解決擴展和容器應用的實時通訊問題)

🍅 聯繫作者: iOS逆向(公號:iosrev)


🍅 作者簡介:CSDN 博客專家認證🏆丨全站 Top 50、華為云云享專家認證🏆、iOS逆向公號號主


🍅 簡歷模板、技術互助。關注我,都給你。