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+lua[2]](/uploads/allimg/131030/110J64609-0-lp.jpg)








