qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          iOS項目開發之Socket編程

           有一段時間沒有認真總結和寫博客了
            前段時間找工作、進入工作階段。比較少靜下來認真總結,現在靜下心來總結一下最近的一些心得
            前言
            AsyncSocket介紹
            AsyncSocket詳解
            AsyncSocket示例
            一、前言
            公司的項目用到了Socket編程,之前在學習的過程當中,用到的更多的還是http請求的方式。但是既然用到了就必須學習一下,所以就在網上找一些例子,然后想自己寫一個demo。可是發現很多寫iOS Socket的博客并沒有很詳細的說明,也可能是大神們覺得其他東西都淺顯易懂。
            自己專研了一下,將自己的一些理解總結出來,一方面整理自己的學習思路,另一方面,為一些和我有同樣困惑的小伙伴們,稍做指引。
            二、AsyncSocket介紹
            1)iOS中Socket編程的方式有哪些?
            -BSD Socket
            BSD Socket 是UNIX系統中通用的網絡接口,它不僅支持各種不同的網絡類型,而且也是一種內部進程之間的通信機制。而iOS系統其實本質就是UNIX,所以可以用,但是比較復雜。
            -CFSocket
            CFSocket是蘋果提供給我們的使用Socket的方式,但是用起來還是會不太順手。當然想使用的話,可以細細研究一下。
            -AsyncSocket
            這次博客的主講內容,也是我們在開發項目中經常會用到的。
            2)為什么選擇AsyncSocket?
            iphone的CFNetwork編程比較艱深。使用AsyncSocket開源庫來開發相對較簡單,幫助我們封裝了很多東西。
            三、AsyncSocket詳解
            1??說明
            在我們開發當中,我們主要的任務是開發客戶端。所以詳解里主要將客戶端的整個連接建立過程,以及在說明時候回調哪些函數。在后面的示例代碼中,也會給出服務器端的簡單開發。
            2??過程詳解
            1.建立連接
            - (int)connectServer:(NSString *)hostIP port:(int)hostPort
            2.連接成功后,會回調的函數
            - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
            3.發送數據
            - (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;
            4.接受數據
            -(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
            5.斷開連接
            - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
            - (void)onSocketDidDisconnect:(AsyncSocket *)sock
            主要就是上述的幾個方法,只是說在真正開發當中,很可能我們在收發數據的時候,我們收發的數據并不僅僅是一個字符串包裝成NSData即可,我們很可能會發送結構體等類型,這個時候我們就需要和服務器端的人員協作來開發:定義怎樣的結構體。

          posted on 2014-08-04 09:55 順其自然EVO 閱讀(3774) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2014年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 正蓝旗| 平凉市| 沁水县| 许昌县| 石景山区| 侯马市| 平和县| 乌兰浩特市| 宜兰县| 金坛市| 镇安县| 侯马市| 高尔夫| 阳高县| 富锦市| 维西| 循化| 夹江县| 兴宁市| 鹤山市| 宜兴市| 遂川县| 香河县| 双牌县| 阳新县| 滦平县| 那曲县| 安溪县| 盐边县| 芜湖市| 绵竹市| 宁河县| 新乡县| 安塞县| 阜平县| 庆安县| 常山县| 高要市| 电白县| 湖北省| 太白县|