link_struct* CreatLink(CTCPClient *pTCPClient)
{
char recvBuf[MAX_BUFF_SIZE];
ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);
link_struct* pHead = NULL;
link_struct* pEnd = NULL;
link_struct* pNew = NULL;
int nRecv =0,recvCount =0;
Sleep(200);
while(1)
{
nRecv = recv(pTCPClient->m_socket,recvBuf,MAX_BUFF_SIZE,0);
if(nRecv == SOCKET_ERROR)
{
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;
}
pNew = (link_struct*)malloc(sizeof(link_struct));
if(pNew == NULL)
{
MessageBox("内存空间分配失败","提示");
ReleaseLinkMemory(pHead);
ReleaseLinkMemory(pNew);
Return NULL;
}
memcpy(pNew->RecvBuf,recvBuf,MAX_BUFF_SIZE);
if(pHead == NULL)
pHead = pNew;
else
pEnd->next = pNew;
pEnd = pNew;
recvCount += nRecv;
ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);
pEnd->next = NULL;
if(nRecv>0 && nRecv<MAX_BUFF_SIZE)
break;
nRecv = 0;
}
ZeroMemory(recvBuf,sizeof(char)*MAX_BUFF_SIZE);
recvCount = 0;
nRecv = 0;
return pHead;
}