link_struct* CreatLink(CTCPClient *pTCPClient)

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值