cocos2d-x客戶端與Java伺服器的通訊(一)
阿新 • • 發佈:2019-02-13
(⊙o⊙)…貌似自己已經有一段時間沒有寫部落格了,其實主要原因還是覺得自己水平有限,加上上班實在是太忙,實在抽不出時間來寫部落格。言歸正傳,大家都知道,在網路遊戲開發中,
網路通訊一直是個比較大的難題,一個伺服器可能要同時處理幾千上萬甚至上百萬的使用者資料,當然,僅僅是通訊那是比較簡單,但要設計到一個很好的通訊架構確實還是比較難的,當然這些設計結構不是這篇博文的內容,哈哈,只是實現cocos2d-x客戶端和Java服務端的一個連線而已,至於兩端的資料傳輸暫時不說,^_^
首先,我們需要ODSocket這個類,至於這是什麼個東西,大家可以執行google.
//----------server [ Java ] --------------------------
package com.socket; import java.net.ServerSocket; import java.net.Socket; public class SocketDemo{ public static void main(String[] args) { test(); } private static void test() { ServerSocket serverSocket = null; Socket socket = null; try { System.out.println("ServerStart...."); serverSocket = new ServerSocket(9999); socket = serverSocket.accept(); System.out.println("Connect success..."); serverSocket.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } }
// ---------------------------- Client [C++/cocos2dx] ------------------------------
這裡的客戶端我就是建了一個Cocos2dx工程,然後將menuCloseCallback函式改成連線功能(如下)而已,\(^o^)/~
ODSocket* socket = new ODSocket(); socket->Init(); socket->Create(AF_INET,SOCK_STREAM,0); bool isConnet = socket->Connect("127.0.0.1",9999); LabelTTF* label = dynamic_cast<LabelTTF*>(getChildByTag(TAG_LABEL)); if (NULL != label) { if (isConnet) { label->setString("connect success!"); label->setColor(ccGREEN); } else { label->setString("connect failed!!"); label->setColor(ccRED); } }
執行截圖:
1.伺服器啟動:
2.客戶端開啟-預設狀態(看到這個介面大家是不是覺得很親切哇哈哈~):
3.點選右下角的關閉按鈕進行連線
4.連線成功,一次Socket連線成功完成,哇咔咔!!
好了,本博文的內容就是那麼簡單,大俠們勿噴!!!