你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS中應用 CocoaAsyncSocket​

IOS中應用 CocoaAsyncSocket​

編輯:IOS開發綜合

Socket

現在在 IOS 裡對 Socket 的運用漸漸多了起來,就一個即時通信,許多運用都有集成,那即時通信功效普通來講就確定是基於 Socket 的,Socket 這個話題我一向議論的比擬少,一是因為看過一些 C/C++ 操作 Socket 的代碼被嚇到了一向還有心思暗影存在,二是任務裡沒怎樣碰到相干的需求運用,所以也沒有去深刻研討相干內容。

還沒接觸過 Socket 編程確定也會據說過這幾個症結字:包、握手、銜接、TCP、UDP 等等,Socket 編程的文章網上年夜把年夜把有,而作為一個初心者老是對這些 望文生怯,之前我也是如斯,所以深有領會,願望讀完本篇文章後你會對 在 IOS 平台上的 Socket 編程有一個簡略的懂得,那就是不要怕!

Socket on IOS

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

sys/socket.h - 體系底層 Socket 編程接口
C.network - Core Foundation 中對 socket 的封裝
NSStream - Cocoa 中對 C.network 的封裝
固然,下面這些都是年夜哥級其余,然則就是不想寫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 並沒有想象中的那末龐雜,許多底層的任務框架都替我們做了,可以更集中精神在營業邏輯上。

【IOS中應用 CocoaAsyncSocket​】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved