GCDAsyncSocket的使用

什么是GCDAsyncSocket

GCDAsyncSocket 是用于 OS X 和 iOS 上的異步 Socket 網(wǎng)絡(luò)通訊包坦弟。提供了易用而且功能強(qiáng)大的異步套接字開發(fā)庫(kù)

https://github.com/robbiehanson/CocoaAsyncSocket

基本使用

dispatch_queue_tqueue = dispatch_queue_create("com.test.testsocket.setter", DISPATCH_QUEUE_SERIAL);

_socket = [[GCDAsyncSocket alloc] initWithDelegate:selfdelegateQueue:queue socketQueue:nil];

上面這兩部就做好了初始化的操作,而且要注意窗宇,socket在整個(gè)項(xiàng)目中都會(huì)用到挫掏,所以要做成單例抽取出來

由于蘋果要求對(duì)ipv6做支持侦另,所以還需要加上這段代碼:

_socket.IPv4PreferredOverIPv6=NO;// 設(shè)置支持IPV6

到此準(zhǔn)備工作就做好啦。

連接socket

NSError*error =nil;

[self.socketconnectToHost:@"你的域名"onPort:@"你的端口"withTimeout:@"超時(shí)時(shí)間"error:&error];

如果連接成功尉共,我們會(huì)收到socket連接成功的回調(diào)褒傅,我們可以在這里做心跳的處理,或者token的驗(yàn)證等:

- (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString*)host port:(uint16_t)port

如果連接失敗袄友,我們會(huì)收到失敗的回調(diào)殿托,可以失敗里面做重連的操作

- (void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError*)err

讀和寫

socket連接建立了,這個(gè)時(shí)候我們需要和后臺(tái)約定好協(xié)議格式進(jìn)行通信剧蚣,比如我們可以長(zhǎng)度+真實(shí)數(shù)據(jù)的格式進(jìn)行通信

// 將messageDict進(jìn)行序列化(這里也可以使用kryo進(jìn)行序列化支竹,詳情見http://www.reibang.com/p/43f2a39ce1fd)NSData*contents = [NSJSONSerializationdataWithJSONObject:messageDict options:NSJSONWritingPrettyPrintederror:&error];if(error)

{

MyLog(@"%s--------error:%@",__func__,error);

}// 獲取長(zhǎng)度intlen = (int)contents.length;NSData*lengthData = [NSDatadataWithBytes:&len length:sizeof(len)];// 發(fā)送長(zhǎng)度[self.socketwriteData:lengthData withTimeout:-1tag:0];// 發(fā)送真實(shí)數(shù)據(jù)[self.socketwriteData:contents withTimeout:-1tag:0];// 讀取數(shù)據(jù)[self.socketreadDataWithTimeout:-1tag:0];

我們?cè)谙蚍?wù)器寫完數(shù)據(jù)之后一定不要忘了調(diào)用讀方法,這樣才能收到從服務(wù)器那邊返回的數(shù)據(jù)鸠按,并且會(huì)收到讀的回調(diào)

- (void)socket:(GCDAsyncSocket *)sock didReadData:(NSData*)data withTag:(long)tag

在這個(gè)回調(diào)里面礼搁,我們可以用一個(gè)緩沖區(qū)來不斷接收我們收到的數(shù)據(jù),并且在收到完整的數(shù)據(jù)后進(jìn)行相應(yīng)的處理

斷開socket連接

[self.socketdisconnect];

這樣子目尖,socket的基本通信就告一段落啦

轉(zhuǎn)載自微信號(hào)【IT牛料】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馒吴,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子瑟曲,更是在濱河造成了極大的恐慌募书,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件测蹲,死亡現(xiàn)場(chǎng)離奇詭異莹捡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扣甲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門篮赢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人琉挖,你說我怎么就攤上這事启泣。” “怎么了示辈?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵寥茫,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我矾麻,道長(zhǎng)纱耻,這世上最難降的妖魔是什么芭梯? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮弄喘,結(jié)果婚禮上玖喘,老公的妹妹穿的比我還像新娘。我一直安慰自己蘑志,他們只是感情好累奈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著急但,像睡著了一般澎媒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上波桩,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天旱幼,我揣著相機(jī)與錄音,去河邊找鬼突委。 笑死,一個(gè)胖子當(dāng)著我的面吹牛冬三,可吹牛的內(nèi)容都是我干的匀油。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼勾笆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼敌蚜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起窝爪,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤弛车,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蒲每,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纷跛,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年邀杏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贫奠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡望蜡,死狀恐怖唤崭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脖律,我是刑警寧澤谢肾,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站小泉,受9級(jí)特大地震影響芦疏,放射性物質(zhì)發(fā)生泄漏冕杠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一眯分、第九天 我趴在偏房一處隱蔽的房頂上張望拌汇。 院中可真熱鬧,春花似錦弊决、人聲如沸噪舀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)与倡。三九已至,卻和暖如春昆稿,著一層夾襖步出監(jiān)牢的瞬間纺座,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工溉潭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留净响,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓喳瓣,卻偏偏與公主長(zhǎng)得像馋贤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子畏陕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容