现在的位置: 首页 > 综合 > 正文

cocos2d-x客户端与Java服务器的通信(一)

2013年06月29日 ⁄ 综合 ⁄ 共 1368字 ⁄ 字号 评论关闭

(⊙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连接成功完成,哇咔咔!!

好了,本博文的内容就是那么简单,大侠们勿喷!!!

抱歉!评论已关闭.