步驟二:創建Socket,鏈接服務器,如果鏈接成功,則執行步驟三,如果鏈接失敗則報錯,請求失敗,結束。
步驟三:發請求數據到服務器,判斷send返回狀態,如果小於0,執行步驟四,如果已發送長度等於發送長度,則執行步驟五,否則繼續執行步驟三再次發送剩餘數據(這裏沒有考慮等於0的狀態)
步驟四:返回了SOCKET_ERROR錯誤,關閉socket,重置鏈接狀態和創建Socket狀態,返回錯誤,請求失敗,結束。
步驟五:檢查接收線程是否啓動,如果線程正在運行,則執行步驟七,否則執行步驟六。
步驟六:創建線程,判斷停止標誌,循環執行接收數據函數(使用libevent的話,僅僅是執行dispatch),然後轉到步驟七,等待數據返回。
步驟七:等待服務器數據返回,阻塞狀態,如果有數據返回,則執行步驟八。
步驟八:當有數據到達時,判斷接收狀態,如果大於等於0,則執行步驟四,並設置線程終止標誌。否則把數據添加到公共緩衝區或者公共隊列(線程安全)中。
cocos2d-x scoket 解決方案
網上搜索的幾篇優秀的關於socket的文章
純c++版的
1. 跨平臺的遊戲客戶端Socket封裝
注意添加頭文件
#include
#include
cocos2d-x 擴展版的
2. 包含到cocos2d-x裏的tcpsocket源碼
coocs2dx 簡易封裝的
3. cocos2d-x 跨平臺Socket網絡模塊
cocos2d-x BSD版
4. Cocos2d-x基於BSD Socket網絡通訊模塊
其他相關
5. 基於Socket的UDP和TCP編程介紹