18,356
社区成员
发帖
与我相关
我的任务
分享
LRESULT CClientDlg::OnSvrMsg01(WPARAM wParam,LPARAM lParam)
{
if(!mySocket.m_bConnect)return 0L;
if(WSAGETSELECTEVENT(lParam)!=FD_READ)return 0L;
if(mySocket.m_clientSocket!=wParam)return 0L;
mySocket.m_nLength=recv(mySocket.m_clientSocket,(LPSTR)mySocket.buf,sizeof(mySocket.buf),0);
if(mySocket.m_nLength>0)
{
m_ProcRecvData.OnRecvDataEx((LPBYTE)mySocket.buf, mySocket.m_nLength);
}
mySocket.Init();
return 0;
}
mySocket.m_nLength=recv(mySocket.m_clientSocket,(LPSTR)mySocket.buf,sizeof(mySocket.buf),0);
if(mySocket.m_nLength>0)
{
LPBYTE pBuffer = new BYTE[mySocket.m_nLength];
memcpy(pBuffer, (LPBYTE)mySocket.buf, mySocket.m_nLength);
m_bufferList.AddTail(pBuffer);
m_ProcRecvData.OnRecvDataEx(&m_bufferList, mySocket.m_nLength);
void CProcRecvData::OnRecvDataEx(CList<LPBYTE> * pBufferList, int nBufferLen)
{
EnterCriticalSection(&m_cs);
LPBYTE pTempBuffer = (LPBYTE)pBufferList->GetHead();
OnRecvData(pTempBuffer, nBufferLen);
delete[] pTempBuffer;
pTempBuffer = NULL;
pBufferList->RemoveHead();
LeaveCriticalSection(&m_cs);
}