(⊙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连接成功完成,哇咔咔!!
好了,本博文的内容就是那么简单,大侠们勿喷!!!