IOS中使用 CocoaAsyncSocket​_IOS

來源:互聯網
上載者:User

Socket

如今在 iOS 裡對 Socket 的應用慢慢多了起來,就一個即時通訊,很多應用都有整合,那即時通訊功能一般來說就肯定是基於 Socket 的,Socket 這個話題我一直談論的比較少,一是由於看過一些 C/C++ 操作 Socket 的代碼被嚇到了一直還有心理陰影存在,二是工作裡沒怎麼遇到相關的需求應用,所以也沒有去深入研究相關內容。

還沒接觸過 Socket 編程肯定也會聽說過這幾個關鍵字:包、握手、串連、TCP、UDP 等等,Socket 編程的文章網上大把大把有,而作為一個初心者總是對這些 望文生怯,之前我也是如此,所以深有體會,希望讀完本篇文章後你會對 在 iOS 平台上的 Socket 編程有一個簡單的瞭解,那就是不要怕!

Socket on iOS

在 iOS 上,哦不,應該說 Cocoa 的世界裡,Socket 編程應該有以下幾種方式:

sys/socket.h - 系統底層 Socket 編程介面
CFNetwork - Core Foundation 中對 socket 的封裝
NSStream - Cocoa 中對 CFNetwork 的封裝
當然,上面這些都是大哥層級的,但是就是不想寫C,我們小白當然可以用用抽象更高的開源庫,比如:

CocoaAsyncSocket
SocketRocket
Socket.IO
CocoaAsyncSocket

之前一直沒有機會在 iOS 平台上寫 Socket,最近遇到一個需要用 Socket 做檔案上傳下載的功能,那麼 iOS 上做 Socket 編程大家都知道是 CocoaAsyncSocket 一家獨大,也木有發現其他更好的替代品,於是簡單看了看文檔,就操刀上戰場了。

CocoaAsyncSocket 是一個純 Objective-C 的開源庫,用起來非常簡單,當然也相容了 Swift 的文法。

TCP & UDP

如果你看到 CocoaAsyncSocket 首頁的說明應該會注意到有 TCP 和 UDP 兩套介面,簡單來說就是 Socket 支援兩種協議,一個叫 TCP、一個叫 UDP;TCP 連線導向,每次請求需要幾次 “握手”,資料有序可靠;UDP 就簡單點,不握手了,發包也無序,不用保持串連,也不用一些其它的開傳輸開銷,頻寬消耗就更少。然後 CocoaAsyncSocket 針對於 TCP 和 UDP 分別封裝出來了兩套 API,命名分別以 TCP 或 UDP 打頭。

GCD & Run-loop

仔細觀察 CocoaAsyncSocket 對其類的命名可以發現除了 TCP 和 UDP 分拆成了兩套 API,一套時基於 GCD 程安全的 GCDAsyncSocket/GCDAsyncUdpSocket,一套是基於 Run-loop 的 AsyncSocket/AsyncUdpSocket,一般來說我們用基於 GCD 的封裝就好了。

在實際應用中我想大多數需求都是基於 TCP 的,所以我們主要看看 GCDAsyncSocket,看到 GCD 不要以為其所有回調都是 GCD 的,看了源碼你就知道所有回調全是 Delegate。

GCDAsyncSocket

一般 iOS 上 socket 做 client 端居多,所以用到的一些基本操作就是 connect、read、write、disconnect,GCDAsyncSocket 的封裝非常簡單,初上手可能遇到的問題就在於一個完整的 socket 操作流程的不清楚,只要摸清楚服務端的邏輯流程就很輕鬆了,比如需要先讀多少位元組,然後從結果中解析出某部分資料,然後再讀多少位元組,再分析資料,再讀再寫...

總結

其實 Socket 並沒有想象中的那麼複雜,很多底層的工作架構都替我們做了,可以更集中精力在商務邏輯上。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.