コード例 #1
0
ファイル: UdpClient.cpp プロジェクト: buxinqiufeng/UdpSocket
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;
}