⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverdlg.c

📁 Linux 下的socket客户端服务端代码
💻 C
字号:

#include "serverdlg.h"
#include "time.h"

/*----------------------------------------------------*/
#define CIR_SOCKETUSER_SIGN        ("CSU:")
static CIRCLEACHESTATUS SocketUser_CircleAche ;
static int SocketUser_Circle_Occupy=0;

void fdebug(char *msg, int errn)
{
    printf("\n %s[%d]",msg,errn);  
}

REQLIST *MallocSocketUser(unsigned long wnd)
{
    int curcount=0;
    int found=0,freei;
    void *lpSocketUserData=NULL;
    unsigned char icx[9];
    unsigned char *lpbuf=NULL;
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    
    memcpy((void*)icx,(void*)(CIR_SOCKETUSER_SIGN),4);
    SetBuf44((unsigned char*)(icx+4),wnd);
    
    curcount=GetCircleAcheCount(&SocketUser_CircleAche);
    for(freei=0;freei<curcount;freei++)
    {
        lpbuf=(unsigned char*)GetCurCircleAche(&SocketUser_CircleAche);
        if(lpbuf!=NULL)
        {
            if(memcmp((void*)(lpbuf),(void*)icx,8) EQ 0)
            {
                found=1;
                break;
            }
        }
    }
    
    if(!found)
    {
        lpbuf = (unsigned char*)malloc(sizeof(REQLIST)+16);
        if(lpbuf EQ NULL)
            return NULL;
        memcpy((void*)(lpbuf),(void*)(icx),8);
        AddCircleAche(&SocketUser_CircleAche, (void *)lpbuf);
    }
    
    lpSocketUserData = (void*)(lpbuf+8);
    
    SocketUser_Circle_Occupy=0;
    return (REQLIST *)(lpSocketUserData);
}

int FreeSocketUser( unsigned long wnd)
{
    int curcount=0;
    int found=0,freei;
    unsigned char icx[9];
    unsigned char *lpbuf=NULL;
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    
    memcpy((void*)icx,(void*)(CIR_SOCKETUSER_SIGN),4);
    SetBuf44((unsigned char*)(icx+4),wnd);
    
    curcount=GetCircleAcheCount(&SocketUser_CircleAche);
    for(freei=0;freei<curcount;freei++)
    {
        lpbuf=(unsigned char*)GetCurCircleAche(&SocketUser_CircleAche);
        if(lpbuf!=NULL)
        {
            if(memcmp((void*)(lpbuf),(void*)icx,8) EQ 0)
            {
                found=1;
                free(lpbuf);
                DelCircleAche(&SocketUser_CircleAche,(void*)lpbuf);
                break;
            }
        }
    }
    
    SocketUser_Circle_Occupy=0;
    return found;
}

int FreeAllSocketUser(void)
{
    int curcount=0;
    int found=0,freei;
    unsigned char icx[9];
    unsigned char *lpbuf=NULL;
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    
    memcpy((void*)icx,(void*)(CIR_SOCKETUSER_SIGN),4);
    
    curcount=GetCircleAcheCount(&SocketUser_CircleAche);
    for(freei=0;freei<curcount;freei++)
    {
        lpbuf=(unsigned char*)GetCurCircleAche(&SocketUser_CircleAche);
        if(lpbuf!=NULL)
        {
            if(memcmp((void*)(lpbuf),(void*)icx,4) EQ 0)
            {
                found=1;
                free(lpbuf);
                DelCircleAche(&SocketUser_CircleAche,(void*)lpbuf);
            }
        }
    }
    
    SocketUser_Circle_Occupy=0;
    return found;
}

unsigned long GetSocketUserCount(void)
{
    unsigned long ret=0;
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    ret = GetCircleAcheCount(&SocketUser_CircleAche);
    SocketUser_Circle_Occupy=0;
    return ret;
}

int ResetSocketUser(void)
{
    int ret=0;
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    ret=ResetCircleAche(&SocketUser_CircleAche);
    SocketUser_Circle_Occupy=0;
    return ret;
}

REQLIST *GetSocketUser(unsigned long wnd)
{
    int curcount=0;
    int found=0,freei;
    void *lpSocketUserData=NULL;
    unsigned char icx[9];
    unsigned char *lpbuf=NULL;
    
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    
    memcpy((void*)icx,(void*)(CIR_SOCKETUSER_SIGN),4);
    SetBuf44((unsigned char*)(icx+4),wnd);
    
    curcount=GetCircleAcheCount(&SocketUser_CircleAche);
    for(freei=0;freei<curcount;freei++)
    {
        lpbuf=(unsigned char *)GetCurCircleAche(&SocketUser_CircleAche);
        if(lpbuf!=NULL)
        {
            if(memcmp((void*)(lpbuf),(void*)icx,8) EQ 0)
            {
                found=1;
                lpSocketUserData=(void*)(lpbuf+8);
                break;
            }
        }
    }
    
    SocketUser_Circle_Occupy=0;
    return (REQLIST *)lpSocketUserData;
}


REQLIST *GetNextSocketUser(void)
{
    int curcount=0;
    int found=0;
    void *lpSocketUserData=NULL;
    unsigned char icx[9];
    unsigned char *lpbuf=NULL;
    
    while(SocketUser_Circle_Occupy);
    SocketUser_Circle_Occupy=1;
    
    memcpy((void*)icx,(void*)(CIR_SOCKETUSER_SIGN),4);
    
    curcount=GetCircleAcheCount(&SocketUser_CircleAche);
    if(curcount>0)
    {
        lpbuf=(unsigned char *)GetCurCircleAche(&SocketUser_CircleAche);
        if(lpbuf!=NULL)
        {
            if(memcmp((void*)(lpbuf),(void*)icx,4) EQ 0)
            {
                found=1;
                lpSocketUserData=(void*)(lpbuf+8);
            }
        }
    }
    
    SocketUser_Circle_Occupy=0;
    return (REQLIST *)lpSocketUserData;
}

/* **********************************************************************
-----------  Socket Communication 
********************************************************************** */
#define DEFAULT_PORT 8888 
#define DEFAULT_HOST "192.168.0.10"

#define MAXRECLEN            4096    /* Request Packet Lenght */
#define CHIPBUFLENGTH        1024    /* max ache in buf 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -