一、Socket
Socket就是為網(wǎng)絡服務提供的一種機制。網(wǎng)絡通信其實就是Socket間的通信,通信的兩端都是Socket,數(shù)據(jù)在兩個Socket間通過IO傳輸。
在Web服務大行其道的今天,調用Web服務的代價是高昂的,尤其是僅僅是抓取少量數(shù)據(jù)的時候尤其如此。而使用Socket,可以只傳送數(shù)據(jù)本身而不用進行XML封裝,大大降低數(shù)據(jù)傳輸?shù)拈_銷。Socket允許使用長連接,允許應用程序運行在異步模式(提高效率),只有在需要的時候才接收數(shù)據(jù)
iOS中常用的兩種Socket類型:
流式Socket(SOCK_STREAM):流式是一種面向連接的Socket,針對于面向連接的TCP服務應用
數(shù)據(jù)報式Socket(SOCK_DGRAM):數(shù)據(jù)報式Socket是一種無連接的Socket,對應于無連接的UDP服務應用
在iOS中使用流式Socket連接的方法:
以NSStream(流)的方式來發(fā)送和接收數(shù)據(jù)
設置流的代理,對流狀態(tài)的變化做出相應
a. 連接建立
b. 接收到數(shù)據(jù)
c. 連接關閉
其中:
1. NSStream:數(shù)據(jù)流的父類,用于定義抽象特性,例如:打開、關閉代理,繼承自CFStream(Core Foundation)
2. NSInputStream:NSStream的子類,用于讀取輸入
3. NSOutputStream:NSSTream的子類,用于寫輸出