在此之前發(fā)給鏈接關(guān)于socket ipv6的適配問題 https://github.com/robbiehanson/CocoaAsyncSocket/issues/405
之前寫的socket不怎么清晰,所以很多人過來咨詢陋守,打算重新再整理下。順便把大家的問題總結(jié)下
首先得大概了解TCP原理和UDP的一點(diǎn)區(qū)別媚赖!當(dāng)然了我自己也是似懂非懂的狀態(tài),這些還是要靠自己慢慢摸索怀吻,多看看別人的blog見解后裸,網(wǎng)上一搜一大把洼裤。GCDAsyncSocket是IOS中TCP通訊使用的一個第三方庫。至于的它的什么三次握手啊這些網(wǎng)上多的很锐膜,我也不做過多的重復(fù)聋迎。下面就從demo開始吧!
開始之前應(yīng)該都能想到socket是貫穿整個項(xiàng)目使用枣耀,所以盡量提取出來霉晕,寫成單例
至于為何把connet方法提出來,主要是為了斷開重連方便
鏈接是否成功和命令是否發(fā)送成功的回調(diào) delegate已經(jīng)提供 我們只要調(diào)用方法就可以
有心的童靴可以看到我在鏈接是否成功里面的 寫了readDataWithTimeout的方法 其實(shí)是告訴socket你的超時時間
鏈接成功后肯定要進(jìn)行數(shù)據(jù)傳輸 這部分的各個項(xiàng)目的情況不一樣 捞奕,一般都不是單一的命令 所以我建議把具體的命令函數(shù)單獨(dú)寫成類 ?
我這里是提出命令數(shù)據(jù)單獨(dú)進(jìn)行處理牺堰,可以給大家看看 當(dāng)然每個公司的協(xié)議不同僅作參考
最后就是接受數(shù)據(jù)的回調(diào),
在這里跟各位童靴說下 颅围,很多碰到這種問題 伟葫,開始的時候能夠接收到返回的數(shù)據(jù) 過來一會就不能,經(jīng)常這種情況院促,我看了下 大家都是把timeout寫成 10啊 30啊固定的時間筏养,這里我和大家解釋下斧抱,這個函數(shù)的意義,readDataWithTimeout ?它底層相當(dāng)于開了線程等待接收數(shù)據(jù) 過了這個時間 就自動停止渐溶,-1表示一直接收 ?辉浦。
最后就是socket關(guān)閉的方法 DidClose DidDisconnect.
這次更新就到這吧!謝謝茎辐!