void *UdpClient::RecvThread(void * pParam) { if(null == pParam) return 0; UdpClient *pThis = (UdpClient*)pParam; char *tmpBuf = new char(pThis->mMaxMsgLen); pThis->mIsRecvThreadRunning = true; while(1) { int res = recv(pThis->mSocketFd, tmpBuf, pThis->mMaxMsgLen, 0); if(0 < res) { if(DEBUG) cout << "Receive data : " << tmpBuf << endl; pthread_mutex_lock(&pThis->mMutex); string tmp = tmpBuf; pThis->mDataList.push_back(tmp); pthread_mutex_unlock(&pThis->mMutex); } else if(0 == res) { cerr << "lost connect" << endl; pthread_mutex_lock(&pThis->mMutex); pThis->OnDisconnect(); pThis->mIsConnecting = false; pthread_mutex_unlock(&pThis->mMutex); break; } else { cerr << "receive failed." << endl; } delete tmpBuf; } pThis->mIsRecvThreadRunning = false; return null; }