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程序就完成了。
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>