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学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1