一接收数据将其存入deque里

来源:互联网 发布:mac上怎么安装双系统 编辑:程序博客网 时间:2024/06/05 16:23

全局变量 deque<char>RecvDeq;

void AppendDeq(CTCPClient_CE *pTCPClient)

{

char recvBuf[MAX_BUFF_SIZE];

ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);

int nRecv =0;

        //Sleep(200);

while(1)

{

nRecv = recv(pTCPClient->m_socket,recvBuf,MAX_BUFF_SIZE,0);

if(nRecv  == SOCKET_ERROR)

{

CString str;

str.Format("Receive data failed,error code:%d",WSAGetLastError());

pTCPClient->OnError(pTCPClient->m_pOwnerWnd,WSAGetLastError());

pTCPClient->OnDisConnect(pTCPClient->m_pOwnerWnd);

//closesocket(pTCPClient->m_socket);

//ReleaseLinkMemory(pHead);

break;

}

else if(nRecv  == 0)

{

pTCPClient->OnError(pTCPClient->m_pOwnerWnd,WSAGetLastError());

pTCPClient->OnDisConnect(pTCPClient->m_pOwnerWnd);

closesocket(pTCPClient->m_socket);

//ReleaseLinkMemory(pHead);

int index = MessageBox(pTCPClient->m_pOwnerWnd->m_hWnd,"与服务器断开连接,请重新登录","提示",MB_YESNO|MB_ICONQUESTION);

if(index == IDYES)

SendMessage(pTCPClient->m_pOwnerWnd->m_hWnd,WM_RELOGIN,0,0);

break;

}

if(nRecv>0)

{

for(int i=0;i<nRecv;i++)

RecvDeq.push_back(recvBuf[i]);

}

ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);

//if(nRecv>0 && nRecv<MAX_BUFF_SIZE)

//break;

nRecv = 0;

}

ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);

nRecv = 0;

//return RecvDeq;

}

0 0
原创粉丝点击