void TcpClient::handleRegisterAck(RecvStream *prs) { RegisterAck ra; ra.fromStream(prs->stream, prs->size); WORD serialNumber = ra.sn; cout<<"sn:"<<ra.sn<<endl; pthread_mutex_lock(&mutexserialNumber); serialNumberList.push_front(serialNumber); pthread_mutex_unlock(&mutexserialNumber); if(ra.result == 0) { Authentication au; au.code = ra.authenticationCode; au.header.property = 12+au.code.length() +1; memcpy(au.header.phoneNumber, m_phoneNumber,6); Msg msg; unsigned char ori[1024]; int len; len = au.toStream(ori); len = addCheckCode(ori,len); toComposedMsg(ori,len, msg.stream, &(msg.len)); msg.resendTimes=0; msg.msgSerialNumber = au.header.msgSerialNumber; msg.sendChars = 0; msg.complete = false; pthread_mutex_lock(&mutex); msgList.push_front(msg); pthread_mutex_unlock(&mutex); } }