亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

IOS中使用 CocoaAsyncSocket​

 更新時(shí)間:2016年02月14日 11:05:53   投稿:hebedich  
ios原生的socket用起來不是很直觀,所以我用的是CocoaAsyncSocket這個(gè)第三方庫,對(duì)socket的封裝比較好,只是好像沒有帶外傳輸(out—of-band) 如果你的服務(wù)器需要發(fā)送帶外數(shù)據(jù),可能得想下別的辦法

Socket

如今在 iOS 里對(duì) Socket 的應(yīng)用慢慢多了起來,就一個(gè)即時(shí)通訊,很多應(yīng)用都有集成,那即時(shí)通訊功能一般來說就肯定是基于 Socket 的,Socket 這個(gè)話題我一直談?wù)摰谋容^少,一是由于看過一些 C/C++ 操作 Socket 的代碼被嚇到了一直還有心理陰影存在,二是工作里沒怎么遇到相關(guān)的需求應(yīng)用,所以也沒有去深入研究相關(guān)內(nèi)容。

還沒接觸過 Socket 編程肯定也會(huì)聽說過這幾個(gè)關(guān)鍵字:包、握手、連接、TCP、UDP 等等,Socket 編程的文章網(wǎng)上大把大把有,而作為一個(gè)初心者總是對(duì)這些 望文生怯,之前我也是如此,所以深有體會(huì),希望讀完本篇文章后你會(huì)對(duì) 在 iOS 平臺(tái)上的 Socket 編程有一個(gè)簡(jiǎn)單的了解,那就是不要怕!

Socket on iOS

在 iOS 上,哦不,應(yīng)該說 Cocoa 的世界里,Socket 編程應(yīng)該有以下幾種方式:

sys/socket.h - 系統(tǒng)底層 Socket 編程接口
CFNetwork - Core Foundation 中對(duì) socket 的封裝
NSStream - Cocoa 中對(duì) CFNetwork 的封裝
當(dāng)然,上面這些都是大哥級(jí)別的,但是就是不想寫C,我們小白當(dāng)然可以用用抽象更高的開源庫,比如:

CocoaAsyncSocket
SocketRocket
Socket.IO
CocoaAsyncSocket

之前一直沒有機(jī)會(huì)在 iOS 平臺(tái)上寫 Socket,最近遇到一個(gè)需要用 Socket 做文件上傳下載的功能,那么 iOS 上做 Socket 編程大家都知道是 CocoaAsyncSocket 一家獨(dú)大,也木有發(fā)現(xiàn)其他更好的替代品,于是簡(jiǎn)單看了看文檔,就操刀上戰(zhàn)場(chǎng)了。

CocoaAsyncSocket 是一個(gè)純 Objective-C 的開源庫,用起來非常簡(jiǎn)單,當(dāng)然也兼容了 Swift 的語法。

TCP & UDP

如果你看到 CocoaAsyncSocket 主頁的說明應(yīng)該會(huì)注意到有 TCP 和 UDP 兩套接口,簡(jiǎn)單來說就是 Socket 支持兩種協(xié)議,一個(gè)叫 TCP、一個(gè)叫 UDP;TCP 面向連接,每次請(qǐng)求需要幾次 “握手”,數(shù)據(jù)有序可靠;UDP 就簡(jiǎn)單點(diǎn),不握手了,發(fā)包也無序,不用保持連接,也不用一些其它的開傳輸開銷,帶寬消耗就更少。然后 CocoaAsyncSocket 針對(duì)于 TCP 和 UDP 分別封裝出來了兩套 API,命名分別以 TCP 或 UDP 打頭。

GCD & Run-loop

仔細(xì)觀察 CocoaAsyncSocket 對(duì)其類的命名可以發(fā)現(xiàn)除了 TCP 和 UDP 分拆成了兩套 API,一套時(shí)基于 GCD 程安全的 GCDAsyncSocket/GCDAsyncUdpSocket,一套是基于 Run-loop 的 AsyncSocket/AsyncUdpSocket,一般來說我們用基于 GCD 的封裝就好了。

在實(shí)際應(yīng)用中我想大多數(shù)需求都是基于 TCP 的,所以我們主要看看 GCDAsyncSocket,看到 GCD 不要以為其所有回調(diào)都是 GCD 的,看了源碼你就知道所有回調(diào)全是 Delegate。

GCDAsyncSocket

一般 iOS 上 socket 做 client 端居多,所以用到的一些基本操作就是 connect、read、write、disconnect,GCDAsyncSocket 的封裝非常簡(jiǎn)單,初上手可能遇到的問題就在于一個(gè)完整的 socket 操作流程的不清楚,只要摸清楚服務(wù)端的邏輯流程就很輕松了,比如需要先讀多少字節(jié),然后從結(jié)果中解析出某部分?jǐn)?shù)據(jù),然后再讀多少字節(jié),再分析數(shù)據(jù),再讀再寫...

總結(jié)

其實(shí) Socket 并沒有想象中的那么復(fù)雜,很多底層的工作框架都替我們做了,可以更集中精力在業(yè)務(wù)邏輯上。

相關(guān)文章

  • iOS開發(fā)之TableView實(shí)現(xiàn)完整的分割線詳解

    iOS開發(fā)之TableView實(shí)現(xiàn)完整的分割線詳解

    在iOS開發(fā)中, tableView是我們最常用的UI控件之一。所以這篇文章主要給大家詳細(xì)介紹了關(guān)于iOS中的TableView分割線,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • iOS實(shí)現(xiàn)文件下載功能

    iOS實(shí)現(xiàn)文件下載功能

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)文件下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • iOS項(xiàng)目開發(fā)鍵盤彈出遮擋輸入框問題解決方案

    iOS項(xiàng)目開發(fā)鍵盤彈出遮擋輸入框問題解決方案

    大家在用IOS開發(fā)項(xiàng)目的時(shí)候,經(jīng)常出現(xiàn)鍵盤彈出遮擋輸入框問題,小編給大家整理的這個(gè)問題的處理方法,一起學(xué)習(xí)下。
    2018-01-01
  • iOS使用UIKeyInput自定義密碼輸入框的方法示例

    iOS使用UIKeyInput自定義密碼輸入框的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS如何使用UIKeyInput自定義密碼輸入框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS app中無網(wǎng)絡(luò)頁面的添加方法詳解

    iOS app中無網(wǎng)絡(luò)頁面的添加方法詳解

    這篇文章主要給大家介紹了關(guān)于iOS app中無網(wǎng)絡(luò)頁面的添加方法的相關(guān)資料,通過文中提供的方法可以很方便的給大家進(jìn)行提供一個(gè)提醒,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-01-01
  • iOS UISearchController的使用方法

    iOS UISearchController的使用方法

    本文主要介紹了iOS UISearchController的使用方法,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • 如何在IOS中使用Cordova插件

    如何在IOS中使用Cordova插件

    這篇文章主要介紹了如何在IOS中使用Cordova插件,包括搭建和使用方法,如果對(duì)Cordova感興趣的同學(xué),可以參考下
    2021-04-04
  • iOS中生成指定大小、指定顏色的二維碼和條形碼方法詳解

    iOS中生成指定大小、指定顏色的二維碼和條形碼方法詳解

    本文主要介紹了iOS中生成指定大小、指定顏色的二維碼和條形碼的具體實(shí)現(xiàn)方法,具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2016-12-12
  • iOS創(chuàng)建對(duì)象的不同姿勢(shì)詳解

    iOS創(chuàng)建對(duì)象的不同姿勢(shì)詳解

    這篇文章主要介紹了iOS創(chuàng)建對(duì)象的不同姿勢(shì),文中介紹的很詳細(xì),對(duì)大家具有一定的參考價(jià)值,有需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • IOS 開發(fā)狀態(tài)欄隱藏的實(shí)現(xiàn)辦法

    IOS 開發(fā)狀態(tài)欄隱藏的實(shí)現(xiàn)辦法

    這篇文章主要介紹了IOS 開發(fā)狀態(tài)欄隱藏的實(shí)現(xiàn)辦法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論