zoukankan      html  css  js  c++  java
  • TCP客户端频繁连接退出,服务端避免内存的重复开辟

    防止内存的重复开辟:Free 而不 Destory

    参数说明:

    lpFreeSocketList:服务端数据结构中保存的退出的客户对象链表头

    lpSocketListCs:临界区指针

    s:SOCKET对象

    LPSOCKET_OBJ GetSocketObj(LPSOCKET_OBJ * lpFreeSocketList, CRITICAL_SECTION * lpSocketListCs, SOCKET s)
    {
    LPSOCKET_OBJ lpSockObj = NULL;

    EnterCriticalSection(lpSocketListCs);
    if(*lpFreeSocketList)
    {
    lpSockObj = *lpFreeSocketList;
    *lpFreeSocketList = lpSockObj->lpNext;
    lpSockObj->lpNext = NULL;
    }
    else
    {
    lpSockObj = (LPSOCKET_OBJ)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(SOCKET_OBJ));
    if(lpSockObj != NULL)
    {
    InitializeCriticalSection(&lpSockObj->SockCritSec);
    }
    }
    LeaveCriticalSection(lpSocketListCs);
    // Initialize the members
    if(lpSockObj)
    {
    lpSockObj->s = s;
    lpSockObj->lpUserData = NULL;
    lpSockObj->lClosingStatus = 0;
    memset(lpSockObj->szPeerAddr, 0, sizeof(lpSockObj->szPeerAddr));
    }
    return lpSockObj;
    }

  • 相关阅读:
    288.软件开发过程与软件测试
    287.软件测试概述
    离散数学课程重点
    博客园美化
    渗透测试-Getshell总结
    C++迭代器
    每日一题2
    计算机网络面试总结(传输层)
    每日一题-1
    网络安全必备技能
  • 原文地址:https://www.cnblogs.com/lp-blogs/p/3998362.html
Copyright © 2011-2022 走看看