socket大致流程

(C++對蘋果的socket庫進(jìn)行了二次封裝,生成一個新的socket類,我們就使用這個socket類?;静襟E就是:1先設(shè)置需要連接的IP地址和端口號,同時設(shè)置一些連接成功,錯誤,中斷的回調(diào)函數(shù),已經(jīng)連接超時時間等參數(shù)。2接下來創(chuàng)建一個新的線程進(jìn)行socket連接,連接成功,失敗或中斷都會設(shè)置當(dāng)前的連接狀態(tài)。連接的同時會創(chuàng)建一個計時器,每楨會根據(jù)當(dāng)前的連接狀態(tài)進(jìn)行不同的操作,連接失敗或中斷則進(jìn)行重新連接。3連接成功之后在socket成功的狀態(tài)下執(zhí)行一個無限循環(huán),在循環(huán)當(dāng)中執(zhí)行一個recieve的操作,從來接受后端推送的消息,當(dāng)接受到新的推送后,會更新最新的數(shù)據(jù),剛才創(chuàng)建的計時器檢測到該數(shù)據(jù)改變后會調(diào)用lua注冊在c中的函數(shù)執(zhí)行對應(yīng)得操作。

客戶端也可以調(diào)用socket的send函數(shù)執(zhí)行對應(yīng)發(fā)送數(shù)據(jù)。

因為socket是長連接所以需要確定是否在連接狀態(tài),lua 中的 在連接socket成功后 會啟動一個定時器,沒間隔N秒調(diào)用一次socket:send()函數(shù)發(fā)送心跳包,以確定socket在連接狀態(tài),若過N秒后沒有得到后端回復(fù)則認(rèn)為斷開連接,然后重新連接,若得到后端回復(fù)則認(rèn)為在連接狀態(tài),然后啟動一下一個定時器N秒后再次發(fā)送心跳包。)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容