前言
Socket
Socket 是對 TCP/IP 協(xié)議的封裝,其中IP協(xié)議對應(yīng)為網(wǎng)絡(luò)層,TCP 協(xié)議對應(yīng)為傳輸層,而我們常用的HTTP協(xié)議,是位于應(yīng)用層,在七層模型中HTTP協(xié)議是基于 TCP/IP 的,我們想要使用 TCP/IP 協(xié)議,則要通過 Socket
Socket 編程用途(其他待補(bǔ)充)
長連接
端到端的即時通訊
Socket 和 Http(來源網(wǎng)絡(luò))
socket 一般用于比較即時的通信和實時性較高的情況,比如推送,聊天,保持心跳長連接等,http 一般用于實時性要求不那么高的情況,比如信息反饋,圖片上傳,獲取新聞信息等。
二、類似《你猜我畫》簡易效果說明
效果(分別是模擬器和手機(jī)截圖)
工作中碰到類似需求,但沒找到類似的成熟的第三方框架,只有先看看原理性的東西了。其實也就基于 socket 即時傳輸圖片數(shù)據(jù)、筆畫數(shù)據(jù),還有聊天文字,也可以拓展做其他的指令控制
沒有做注冊登錄,沒有做用戶管理,只是簡單原理性的探討
基于 GCDAsyncSocket 框架進(jìn)行,關(guān)于 GCDAsyncSocket 的介紹可自行了解
三、服務(wù)端部分代碼
直接用 mac 程序作為服務(wù)端
Server 類
/*! @method 開啟服務(wù) @abstract 開啟服務(wù)器 TCP 連接服務(wù) */- (void)startServer { self.serverSocket = [[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()]; &