cocos2dx socket 通信(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:次
开启socket通信接收函数
void* GameServer::listenSocketData(void* obj)
{
byte buffer[5];
string contents;
int ret = 0;
// 先接受4字节,获取服务返回长度
bool rs = true;
while(rs)
{
contents = ;
ret = recv(m_socketHandle,buffer,4,0);
// 服务器关闭
if(ret == 0)
{
// CCLog(Error: server close);
rs = false;
}
if(ret == 4)
{
buffer[4]='';
int packetlen = Utils::bytes2int(buffer);
CCLOG(packetlen %d,packetlen);
char buf[packetlen];
int rets = 0;
while((ret = recv(m_socketHandle,buf,packetlen-rets,0))>0)
{
contents.append(buf,ret);
packetlen-=ret;
if(packetlen<=0)
break;
}
CCLog(recv content:%s
,contents.c_str());
CCString* str = CCString::create(Utils::getUnPackMsg(contents));
MTNotificationQueue::sharedNotificationQueue()->postNotification(receivedata, str);
}else {
CCLog(Error: recv data Error %d,ret);
}
}
return NULL;
}
因为我们的cocos2dx客户端与服务器端约定,发送的前四个字节作为发送内容的字节长度,因此首先接收前四个字节,至此,一个多线程socket程序就完成了。
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 进入详细评论页>>
您可能感兴趣的文章
- Cocos2d-x初学指南(1):在helloworld的基础上实现一个拖
- 十三 手游开发神器 cocos2d-x editor 之选关滑动界
- Cocos2d-x初学指南(4): 生成animation 帧动画的2种方法
- cocos2d-x学习笔记(18)--游戏打包(windows平台)
- Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角
- Cocos2d3.0 制作PList文件
- cocos2d-x重力感应
- 《BREW进阶与精通——3G移动增值业务的运营、定
- cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
- Cocos2D-x , CCTextureCache的多线程加载原理和使用方法

![cocos2d_x+lua[2]](/uploads/allimg/131030/110J64609-0-lp.jpg)








