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