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

📄 hwsndmsg.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 <sqlca.h>#include "./include/hw.h"#include "./include/App_client.h"#define SIZE 256 #define SIZE1 30void p_debug();void m_debug();void getsystime();int ReplaceChar();char * GetEtcf(const char*);main(){  char buf[SIZE];  char buff[SIZE];  FILE *fp,*fp1;  int  lenth,count,i,n;  int  keep_original=2000;  char *ptr;  char *desttmp;  char *flename;  char status[10],result[SIZE];	int y[10];  char jizhan[10];  char tmp0[SIZE1],tmp1[SIZE1],tmp2[SIZE1],tmp3[SIZE1],tmp4[SIZE1];   char tmp5[SIZE1],tmp6[SIZE1],tmp7[SIZE1],tmp8[SIZE1],tmp9[SIZE1];   char tmp10[SIZE1],tmp11[SIZE1],tmp12[SIZE1];  char tmp13[SIZE1],tmp14[SIZE1],tmp15[SIZE1];  char tmp16[SIZE1],tmp17[SIZE1],tmp18[SIZE1],tmp19[SIZE1];	int semid;        static char flag[1];        static char eg1[18],eg2[70],eg3[70],time[18],eg4[70],eg5[6];	char tmp[15];	char alarm_level_no[1],alarm_sort_no[1];	char alarm_site_name[31];	char alarm_time[19],alarm_name_no[2];	char icity_no[2],vcity_no[2],sz[2];	char alarm_queue[10];	int alarm_csn,leng;	char rtn[4];	char temp[80];  	char wddm[5];  	char cflag[2];  	char rcvp[5];  	char ipaddr[15];  	char sndp[5];	  n=0;  memset(buf,0x0,SIZE);  memset(buff,0x0,SIZE);  memset(status,0x0,sizeof(status));  memset(result,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(tmp10,0x0,SIZE1);  memset(tmp11,0x0,SIZE1);  memset(tmp12,0x0,SIZE1);  memset(tmp13,0x0,SIZE1);  memset(tmp14,0x0,SIZE1);  memset(tmp15,0x0,SIZE1);  memset(tmp16,0x0,SIZE1);  memset(tmp17,0x0,SIZE1);  memset(tmp18,0x0,SIZE1);  memset(tmp19,0x0,SIZE1);  memset(eg5,0x0,sizeof(eg5));  desttmp=(char *)malloc(sizeof(char)*3);	memset(alarm_site_name,0,31);	memset(alarm_time,0,19);	memset(alarm_name_no,0,2);             flename=GetEtcf(SOCKINFO);            if (flename==NULL){                m_debug("get ETC pathname err");                exit(-1);                }            if ((fp=fopen(flename,"r"))==NULL){                printf("open ETC filename err");                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);   while(1)    {        keep_original=2000;        if (fgets(buf,256,stdin)==NULL){		getsystime(time);		m_debug("%s fgets NULL data\n",time);		sleep(60);		if(n==4){		printf("n=%d\n",n);		n=0;		system("ksh /usr/csc/huawei/hw.sh");		printf("wait!\n");		}		n++;  		continue;		}	else{	      if (strstr(buf,"+++")!=NULL){	         count=0;                 sscanf(buf,"%s%s%s%s",tmp0,tmp1,tmp2,tmp3);	         strcpy(result,tmp2);	         strcat(result,tmp3);	         strcat(result,"|");	      }	      else if (count==1)	      {                 sscanf(buf,"%s%s%s%s%s",tmp4,tmp5,tmp6,tmp7,tmp8);  	         memset(tmp4,0x0,SIZE1);                 lenth=sizeof(buf);	         for(i=0;i<HWCOUNT;i++){	             if ( strncmp(tmp8,alarm_name[i].gjdm,4)==0){                          keep_original=2000;  	                  memset(tmp6,0x0,SIZE1);	                  sprintf(tmp6,"%s|%s|",alarm_name[i].status,alarm_name[i].type);	                  sprintf(tmp4,"%s|%s",tmp5,tmp6);	                  strcat(result,tmp4);                          break;		     }                     else                         keep_original=1000; 	         }	      }              if (keep_original==1000)              {                    count=12;                    continue;              } 	      else if(count==2){	              sscanf(buf,"%s%s%s",tmp9,tmp10,tmp11);                      strcpy(jizhan,tmp11);	      }	      else if (count==7){	          sscanf(buf,"%s%s%s",tmp12,tmp13,tmp14);                  strcat(jizhan,tmp14);	      }	      else if (count==10){	          ReplaceChar(buf,strlen(buf));	          sscanf(buf,"%s%s%s%s%s",tmp15,tmp16,tmp17,tmp18,tmp19);	          strcat(jizhan,tmp19);	          strcat(result,jizhan);	          /*p_debug("result=[%s]\n",result);*/                  PacketHead(result);                  p_debug("result=[%s]\n",result);                  if (snddata(result,sndp,ipaddr)<0)                  m_debug("snd data failure\n");                  memset(result,0,sizeof(result));                  memset(buf,0x0,SIZE);               }              count++;              memset(buf,0x0,SIZE);             }   }   		memset(wddm,0,5);                memset(ipaddr,0,15);                memset(sndp,0,5);                memset(rcvp,0,5);}{        char  *strhead;        char  tmp[256];        strhead="04011001420011|";        strcpy(tmp,buf);        strcpy(buf,strhead);        strcat(buf,tmp);}#define SNDPORT 6201int snddata(char *buff,char *sndp,char *ipaddr){   struct sockaddr_in server;   int tmpsock,flag = 1,i,errno;   int wrtlen;   if ((tmpsock = socket(AF_INET,SOCK_STREAM,0))<0){        m_debug("init tmpsock error\n");        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)        close(tmpsock);        else{        m_debug("snd data fail\n");        return(-1);        }        }    return  0;}char *GetEnvp(){        char    *Envp;        Envp=getenv(MAINDIR);        printf(Envp);        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);        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;}#define	TEMPDIR	"/usr/nmsadmin/print"#define WORKDIR "HOME"#define TRUE	1void p_debug(va_alist)va_dcl{	va_list args;	char    *fmt;	FILE    *fp;        char *envp;	char *filename;	char *ttyname(), *tname;	tname = ttyname(TRUE);/*        envp = GetPrintPath(WORKDIR);        strcpy(filename,envp);        strcat(filename,"/print/hweiapp");*/	filename=GetPrtf("hweiapp");	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,*filename;	char *ttyname(),*tname;	tname=ttyname(TRUE);/*        envp = GetPrintPath(WORKDIR);        strcpy(filename,envp);        strcat(filename,"/print/hweierr");*/	filename=GetPrtf("hweierr");	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;        }	i++;      }      return(0);   }

⌨️ 快捷键说明

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