天天看點

iOS項目開發之Socket程式設計

有一段時間沒有認真總結和寫部落格了

  前言

  asyncsocket詳解

  asyncsocket示例

  一、前言

  自己專研了一下,将自己的一些了解總結出來,一方面整理自己的學習思路,另一方面,為一些和我有同樣困惑的小夥伴們,稍做指引。

  二、asyncsocket介紹

  1)ios中socket程式設計的方式有哪些?

  -bsd socket

  bsd socket 是unix系統中通用的網絡接口,它不僅支援各種不同的網絡類型,而且也是一種内部程序之間的通信機制。而ios系統其實本質就是unix,是以可以用,但是比較複雜。

  -cfsocket

  -asyncsocket

  這次部落格的主講内容,也是我們在開發項目中經常會用到的。

  2)為什麼選擇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即可,我們很可能會發送結構體等類型,這個時候我們就需要和伺服器端的人員協作來開發:定義怎樣的結構體。

最新内容請見作者的github頁:http://qaseven.github.io/