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

📄 alct.c

📁 linux下c 编写的 某项目代理服务端部分的代码。其中包括网络通信
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <varargs.h>
#include <unistd.h>
#include <time.h>
#include <signal.h>
#include "./include/App_client.h"

#define SIZE 1024
#define SIZE1 100
void p_debug();
void m_debug();
void getsystime();
int ReplaceChar(char *,int);
char *GetEtcf(const char*);
char *GetSrcf(const char*);

main()
{
  char buf[SIZE];
  FILE *fp,*fp1;
  int  len,count,i;
  char *ptr;
  char *flename,*srcname;
  char result[SIZE];
  char tmp0[SIZE1],tmp1[SIZE1],tmp2[SIZE1],tmp3[SIZE1],tmp4[SIZE1];
  char tmp5[SIZE1],tmp6[SIZE1],tmp7[SIZE1],tmp8[SIZE1],tmp9[SIZE1];
  char tmp2_0[SIZE1],tmp2_1[SIZE1],tmp2_2[SIZE1],tmp2_3[SIZE1];
  char tmp5_0[SIZE1],tmp5_1[SIZE1],tmp5_2[SIZE1];
  char tmp6_1_0[2],tmp6_1_1[SIZE1],tmp6_1_2[20];
  char tmp6_2_0[2],tmp6_2_1[20];
  char tmp7_0[SIZE1],tmp7_1[SIZE1];
  char tmp8_0[SIZE1],tmp8_1[SIZE1];
  char tmp9_0[SIZE1],tmp9_1[SIZE1];
  char temp[80];
  char wddm[5];
  char cflag[2];
  char rcvp[5];
  char ipaddr[15];
  char sndp[5];

        char alarm_site_name[31];
        char alarm_time[19];
	char alarm_name_no[3];
	char alarm_status_no[2];
	char city_name[20];
	
	memset(alarm_site_name,0x0,sizeof(alarm_site_name));
	memset(alarm_time,0x0,sizeof(alarm_time));
	memset(city_name,0x0,sizeof(city_name));
	memset(alarm_status_no,0x0,sizeof(alarm_status_no));
	memset(alarm_name_no,0x0,sizeof(alarm_name_no));
  memset(buf,0x0,SIZE);
  memset(tmp0,0x0,SIZE1);
  memset(tmp1,0x0,SIZE1);
  memset(tmp2,0x0,SIZE1);
  memset(tmp3,0x0,SIZE1);
  memset(tmp4,0x0,SIZE1);
  memset(tmp5,0x0,SIZE1);
  memset(tmp6,0x0,SIZE1);
  memset(tmp7,0x0,SIZE1);
  memset(tmp8,0x0,SIZE1);
  memset(tmp9,0x0,SIZE1);
  memset(tmp2_0,0x0,SIZE1);
  memset(tmp2_1,0x0,SIZE1);
  memset(tmp2_2,0x0,SIZE1);
  memset(tmp2_3,0x0,SIZE1);
  memset(tmp5_0,0x0,SIZE1);
  memset(tmp5_1,0x0,SIZE1);
  memset(tmp5_2,0x0,SIZE1);
  memset(tmp6_1_0,0x0,SIZE1);
  memset(tmp6_1_1,0x0,SIZE1);
  memset(tmp6_1_2,0x0,SIZE1);
  memset(tmp6_2_0,0x0,SIZE1);
  memset(tmp6_2_1,0x0,SIZE1);
  memset(tmp7_0,0x0,SIZE1);
  memset(tmp7_1,0x0,SIZE1);
  memset(tmp8_0,0x0,SIZE1);
  memset(tmp8_1,0x0,SIZE1);
  memset(tmp9_0,0x0,SIZE1);
  memset(tmp9_1,0x0,SIZE1);
  memset(result,0x0,SIZE);

 	    flename=GetEtcf(SOCKINFO);
            if (flename==NULL){
                m_debug("get ETC pathname err\n");
                exit(-1);
                }
            if ((fp=fopen(flename,"r"))==NULL){
                printf("open ETC filename err\n");
                exit(-1);
                }
            while (fgets(temp,80,fp)!=NULL){
                  if (temp[0]!='#'){
                  sscanf(temp,"%s %s %s %s",wddm,ipaddr,sndp,rcvp);
                }
                  memset(temp,0,80);
             }
             fclose(fp);
	     srcname=GetSrcf(SRCFNAME);
	     if(srcname==NULL){
                m_debug("get SRC pathname err");
                exit(-1);
                }
	     if((fp1=fopen(srcname,"r"))==NULL){
                m_debug("fopen Src File Error ");
		}
while(1){
        if (fgets(buf,512,fp1)!=NULL){
           if ((strstr(buf,"Subject")!=NULL)&&(strstr(buf,"BTS-EXTERNAL")!=NULL)){

        sscanf(buf,"%s%s%s%s%s%s%s%s%s%s%s%s",tmp0,tmp1,tmp2,tmp3,tmp4,\
        tmp5,tmp6,tmp7,tmp8,tmp9);
                ReplaceChar(tmp2,strlen(tmp2));
                sscanf(tmp2,"%s%s%s%s",tmp2_0,tmp2_1,tmp2_2,tmp2_3);
		trimstrcpy(alarm_time,tmp2_1,strlen(tmp2_1));
		
		if(strlen(tmp9)==0)
		{
			if(strlen(tmp8)==0)
			{
				count=1;
			}
			else
			{
				count=3;		
                			ReplaceChar(tmp6,strlen(tmp6));
                			sscanf(tmp6,"%s%s",tmp6_1_0,tmp6_1_1);
					trimstrcpy(alarm_name_no,tmp6_1_0,strlen(tmp6_1_0));
					trimstrcpy(city_name,tmp6_1_1,strlen(tmp6_1_1));
                	ReplaceChar(tmp7,strlen(tmp7));
			sscanf(tmp7,"%s%s",tmp7_0,tmp7_1);
			trimstrcpy(alarm_site_name,tmp7_0,strlen(tmp7_0));
			ReplaceChar(tmp8,strlen(tmp8));
			sscanf(tmp8,"%s",tmp8_1);
			trimstrcpy(alarm_status_no,tmp8_1,strlen(tmp8_1));
                	}
				
		}
		else if(strlen(tmp9)>3)
			{
				count=1;
			}
		else
		{
			count=2;
                		ReplaceChar(tmp7,strlen(tmp7));
                			sscanf(tmp7,"%s%s",tmp7_0,tmp7_1);
					trimstrcpy(alarm_name_no,tmp7_0,strlen(tmp7_0));
					trimstrcpy(city_name,tmp7_1,strlen(tmp7_1));
                	ReplaceChar(tmp8,strlen(tmp8));
			sscanf(tmp8,"%s%s",tmp8_0,tmp8_1);
			trimstrcpy(alarm_site_name,tmp8_0,strlen(tmp8_0));
			ReplaceChar(tmp9,strlen(tmp9));
			sscanf(tmp9,"%s",tmp9_1);
			trimstrcpy(alarm_status_no,tmp9_1,strlen(tmp9_1));
		}
		if(count==3)
		{
			if(strlen(alarm_time)<14)
				result[0]='\0';
			else{
                		sprintf(result,"%s|%s|%s|%s|%s",alarm_time,alarm_name_no,city_name,alarm_site_name,alarm_status_no);
                		p_debug("result=%s\n",result);
				count=0;
			}
		}
		else if(count==2)
		{
			if(strlen(alarm_time)<14)
				result[0]='\0';
			else{
                		sprintf(result,"%s|%s|%s|%s|%s",alarm_time,alarm_name_no,city_name,alarm_site_name,alarm_status_no);
                		p_debug("result=%s\n",result);
			}
		}
	if(result[0]!='\0'){
        	strheader(result);
        	snddata(result,sndp,ipaddr);
sleep(1);
	}

        }
	else
	{
                m_debug("strstr NULL data\n");
	}
	memset(alarm_site_name,0x0,sizeof(alarm_site_name));
	memset(alarm_name_no,0x0,sizeof(alarm_name_no));
	memset(alarm_time,0x0,sizeof(alarm_time));
	memset(city_name,0x0,sizeof(city_name));
	memset(alarm_status_no,0x0,sizeof(alarm_status_no));
        memset(buf,0x0,SIZE);
  memset(tmp0,0x0,SIZE1);
  memset(tmp1,0x0,SIZE1);
  memset(tmp2,0x0,SIZE1);
  memset(tmp3,0x0,SIZE1);
  memset(tmp4,0x0,SIZE1);
  memset(tmp5,0x0,SIZE1);
  memset(tmp6,0x0,SIZE1);
  memset(tmp7,0x0,SIZE1);
  memset(tmp8,0x0,SIZE1);
  memset(tmp9,0x0,SIZE1);
  memset(tmp2_0,0x0,SIZE1);
  memset(tmp2_1,0x0,SIZE1);
  memset(tmp2_2,0x0,SIZE1);
  memset(tmp2_3,0x0,SIZE1);
  memset(tmp5_0,0x0,SIZE1);
  memset(tmp5_1,0x0,SIZE1);
  memset(tmp5_2,0x0,SIZE1);
  memset(tmp6_1_0,0x0,SIZE1);
  memset(tmp6_1_1,0x0,SIZE1);
  memset(tmp6_1_2,0x0,SIZE1);
  memset(tmp6_2_0,0x0,SIZE1);
  memset(tmp6_2_1,0x0,SIZE1);
  memset(tmp7_0,0x0,SIZE1);
  memset(tmp7_1,0x0,SIZE1);
  memset(tmp8_0,0x0,SIZE1);
  memset(tmp8_1,0x0,SIZE1);
  memset(tmp9_0,0x0,SIZE1);
  memset(tmp9_1,0x0,SIZE1);
  memset(result,0x0,SIZE);
       }
	else{
		fclose(fp1);
                getsystime(time);
                m_debug("%s fgets NULL data\n",time);
                break;
                }
		memset(buf,0,512);
    }
		memset(wddm,0,5);
                memset(ipaddr,0,15);
                memset(sndp,0,5);
                memset(rcvp,0,5);

}
char * GetPrintPath(const char *WORKDIR)
{
        char *envp;
        if((envp = getenv(WORKDIR))==NULL)
        {
                printf("error");
                return NULL;
        }
        return envp;
}
char *GetEnvp()
{
        char    *Envp;

        Envp=getenv(MAINDIR);
        if(Envp==NULL){
            p_debug("get Env Error");
            return NULL;
        }
        return Envp;
}
char * GetEtcf(const char* FileName)
{
        char*   EnvDir;
        char*   FilePath;

        FilePath=(char *)malloc(sizeof(char)*FILEPATHLEN);
        EnvDir=GetEnvp();
        if(EnvDir==NULL)
            return NULL;
        sprintf(FilePath,"%s/%s/%s",EnvDir,ETCDIR,FileName);
	printf("%s",FilePath);
        return FilePath;
}

char * GetPrtf(const char* FileName)
{
        char*   EnvDir;
        char*   FilePath;

        FilePath=(char *)malloc(sizeof(char)*FILEPATHLEN);
        EnvDir=GetEnvp();
        if(EnvDir==NULL)
            return NULL;
        sprintf(FilePath,"%s/%s/%s",EnvDir,PRTDIR,FileName);
        return FilePath;
}

char *GetEnvP()
{
        char    *Envp;

        Envp=getenv(SRCDIR);
        if(Envp==NULL){
            p_debug("get Env Error");
            return NULL;
        }
        return Envp;
}

char * GetSrcf(const char* FileName)
{
        char*   EnvDir;
        char*   FilePath;
	char*	DstDir;

        FilePath=(char *)malloc(sizeof(char)*FILEPATHLEN);
        EnvDir=GetEnvP();
        if(EnvDir==NULL)
            return NULL;
       	sprintf(FilePath,"%s/%s",EnvDir,FileName);
        return FilePath;
}
#define TEMPDIR "/usr/nmsadmin/print"
#define WORKDIR "HOME"
#define TRUE    1
void p_debug(va_alist)
va_dcl
{
        va_list args;
        char    *fmt;
        FILE    *fp;
        char *envp;
        char *filename, *ttyname(), *tname;
        tname = ttyname(TRUE);
/*
        envp = GetPrintPath(WORKDIR);
        strcpy(filename,envp);
        strcat(filename,"/print/alctapp");
*/
        /*sprintf(filename, "%s/alctapp", TEMPDIR);deleted by weihy 2005.01.27*/
	filename=GetPrtf("alctapp");	
        fp = fopen(filename, "a");
        va_start(args);
        fmt = va_arg(args, char *);
        vfprintf(fp, fmt, args);
        va_end(args);
        fclose(fp);
}
void m_debug(va_alist)
va_dcl
{
        va_list args;
        char    *fmt;
        FILE    *fp;
        char *envp;
        char *filename,*ttyname(),*tname;
        tname=ttyname(TRUE);
/*
        envp = GetPrintPath(WORKDIR);
        strcpy(filename,envp);
        strcat(filename,"/print/alcterr");
*/
        /*sprintf(filename,"%s/alcterr",TEMPDIR);delete by weihy 2005.01.27*/
	filename=GetPrtf("alcterr");	
        fp=fopen(filename,"a");
        va_start(args);
        fmt=va_arg(args,char *);
        vfprintf(fp,fmt,args);
        va_end(args);
        fclose(fp);
}
void getsystime(char *tmp)
{
        time_t  tv;

        tv=time((time_t *) 0);
        strcpy(tmp,ctime(&tv)+4);
        tmp[20]=0;
}
  int ReplaceChar(char *str,int len)
  {
     int i = 0;

     while (i < len) {
      start: if (str[i] == '|') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '\n') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '(') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '[') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == ']') {
           str[i] = ' ';

                     i++;
           goto start;
        }
        if (str[i] == ')') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '=') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '-') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == ',') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == '.') {
           str[i] = ' ';
           i++;
           goto start;
        }
        if (str[i] == ';') {
           str[i] = ' ';
           i++;
           goto start;
        }
        i++;
      }
      return(0);
   }
int strheader(char *buf)
{
        char  *strhead;
        char  tmp[256];

        strhead="03011001120011|";
        strcpy(tmp,buf);
        strcpy(buf,strhead);
        strcat(buf,tmp);
}

int stop()
{
        static int time=0;
        time++;
        return(time);
}


#define SNDPORT 5201
int snddata(char *buff,const char *sndp,const char *ipaddr)
{
   struct sockaddr_in server;
   int tmpsock,flag = 1,i,errno;
   int wrtlen;

   if ((tmpsock = socket(AF_INET,SOCK_STREAM,0))<0)
      return(-1);
   server.sin_family = AF_INET;
   server.sin_port = htons(atoi(sndp));
   server.sin_addr.s_addr = inet_addr(ipaddr);

   /*connect to server*/
  if(connect(tmpsock,(struct sockaddr *)&server,sizeof(struct sockaddr))<0){
        m_debug("connect to server error\n");
         close(tmpsock);
         return(-3);
   }
   else{
        wrtlen=write(tmpsock,buff,strlen(buff));
        if (wrtlen<0)
	m_debug("write sock error");
        close(tmpsock);
        }
}
int trimstrcpy(char *des, char *src, int len)
{
        int j;
        if (len >= strlen(src))
                j = strlen(src);
        else
                j = len;
        strncpy(des,src,j);
        des[j]='\0';
        return 0;
}

⌨️ 快捷键说明

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