日期:2014-05-16  浏览次数:20407 次

coocs2d-x + scoket 解析Json 流程总结

一个基本流程

1.组装json

void NetDataSend::sendChat(char type, int playerId, int itemIndex, string infoStr){

    Json::Value root;

    root["type"] = type;

    root["playerId"] = playerId;

    root["itemIndex"] = itemIndex;

    root["info"] = infoStr;

    root["index"] = C_CHAT;//指令号1001

    root["opIndex"] = 0;

    string info =root.toStyledString();

2.发送指令

    writeCmd(C_CHAT,info);

}

void NetDataSend::writeCmd(int code, string info){

const char *data=info.c_str();

int size=info.size();

CGameNetBean::sharedNetBean()->writeCmd(code,data,size);//发送指令

NetWaitManager::getInstance()->checkNetWait(code);//根据发送指令,判断是否有需要等待的回复指令,有则添加到等待列表中

}

3.实时监测接受指令

void NetDataReceive::updateNetDate()

{

if(mNetDataList.size()>0){


for(unsigned int i=0;i<mNetDataList.size();i++){

string data=mNetDataList[i];

int index=data.find("|");

int code=getCode(data,index);

string json=getJson(data, index);

4.接收到就解析指令

syncDispatch(code,json);

NetWaitManager::getInstance()->removeWaitCode(code);//移除等待列表中的指令

}